Packages and custom functions

The lnRR_func function is here used to calculate a log response ratio (lnRR) adjusted for small sample sizes. In addition, this formula accounts for correlated samples. For more details, see Doncaster and Spake (2018) Correction for bias in meta-analysis of little-replicated studies. Methods in Ecology and Evolution; 9:634-644

# packages
library(tidyverse)
library(googlesheets4)
library(here)
library(metafor)
library(metaAidR)  # see a note above
library(orchaRd)  # see a note above
library(ape)
library(clubSandwich)
library(metaAidR)
library(patchwork)
library(emmeans)  # see a note above
library(kableExtra)
library(GGally)
library(cowplot)
library(grDevices)  # reqired for using base and ggplots together

# Below is the custom function to calculate the lnRR
lnRR_func <- function(Mc, Nc, Me, Ne, aCV2c, aCV2e) {
    lnRR <- log(Me/Mc) + 0.5 * ((aCV2e/Ne) - (aCV2c/Nc))
    lnRR
}

# calculating lnRR's sampling variance from independent designs
var_lnRR_ind <- function(Mc, Nc, Me, Ne, aCV2c, aCV2e) {

    var_lnRR <- (aCV2c/Nc) + (aCV2e/Ne)

    var_lnRR
}

# calculating lnRR's sampling variance from dependent designs
var_lnRR_dep <- function(Mc, Nc, Me, Ne, aCV2c, aCV2e, rho = 0.5) {
    var_lnRR <- (aCV2c/Nc) + (aCV2e/Ne) - 2 * rho * ((aCV2c * aCV2e)/sqrt(Nc * Ne))

    var_lnRR
}

# Mc: Concentration of PFAS of the raw (control) sample Nc: Sample size of the
# raw (control) sample Me: Concentration of PFAS of the cooked (experimental)
# sample Ne: Sample size of the cooked (experimental) sample aCV2c: Mean
# coefficient of variation of the raw (control) samples aCV2e: Mean coefficient
# of variation of the cooked (experimental) samples

Data import and processing

Import and process raw data

processed_data <- read.csv(here("data", "Raw_data.csv")) 

dat <- processed_data %>% mutate(SDc = ifelse(Sc_technical_biological == "biological", Sc, NA), # Calculate the SD of biological replicates for control samples
                                 SDe = ifelse(Se_technical_biological == "biological", Se, NA)) # Calculate the SD of biological replicates for experimental samples

dat <- dat %>% filter(Species_Scientific != "?") # Remove species without species names
dat <- dat %>% filter(PFAS_type != "PFOS_Total") # Remove species without species names


#### Ratio_liquid_fish with "0" for the dry cooking category
dat<-dat %>% mutate(Ratio_liquid_fish_0 = ifelse(Cooking_Category =="No liquid", 0, Ratio_liquid_fish)) # Add a 0 when the cooking category is "No liquid", otherwise keep the same value of Ratio_liquid_fish

# taking out data without species information


# arrange(select(dat, Cooking_Category, Ratio_liquid_fish, Ratio_liquid_fish_0), Cooking_Category) # Checking everything is fine

dat$Temperature_in_Celsius[dat$Temperature_in_Celsius=="?"] <- NA # Replace "?" by missing values
dat$Temperature_in_Celsius <- as.numeric(dat$Temperature_in_Celsius) # Convert integer to numeric

dat$Study_ID[dat$Effect_ID=="E557"] # Two effect sizes have the same unique identifier
## [1] "F013"
dat$Effect_ID[dat$Effect_ID=="E557"&dat$Study_ID=="F013"]<- "E613"

kable(dat, "html") %>% kable_styling("striped", position = "left") %>% scroll_box(width = "100%", height = "500px")
Study_ID Author_year Publication_year Country_firstAuthor Effect_ID Species_common Species_Scientific Invertebrate_vertebrate Fish_mollusc Moisture_loss_in_percent PFAS_type PFAS_carbon_chain linear_total Choice_of_9 Cooking_method Cooking_Category Comments_cooking Temperature_in_Celsius Length_cooking_time_in_s Water Oil Oil_type Volume_liquid_ml Volume_liquid_ml_0 Ratio_liquid_fish Weigh_g_sample Cohort_ID Cohort_comment Cohort_comment_2 Nc Pooled_Nc Unit_PFAS_conc Mc Mc_comment Sc sd Sc_technical_biological Ne Pooled_Ne Me Me_comment Se Se_technical_biological If_technical_how_many Unit_LOD_LOQ LOD LOQ Design DataSource Raw_data_provided General_comments checked SDc SDe Ratio_liquid_fish_0
F001 Alves_2017 2017 Portugal E001 Flounder Platichthys flesus vertebrate marine fish 7.43 PFOS 8 linear Yes Steaming water-based NA 105 900 Yes No NA NA NA NA NA C001 Shared control NA 25.000000 1 ng/g 24.0000000 NA 1.5280000 sd technical 25.000000 1 22.0000000 NA 1.53 technical 2 ng/g <0.1 <0.2 Dependent Table 3 No Authors replied ML - ok NA NA NA
F001 Alves_2017 2017 Portugal E002 Mackerel Scomber scombrus vertebrate marine fish NA PFUnDA 11 NA Yes Steaming water-based NA 105 900 Yes No NA NA NA NA NA C002 Shared control NA 25.000000 1 ng/g 3.1000000 NA 0.2120000 sd technical 25.000000 1 2.9000000 NA 0.141 technical 2 ng/g <0.1 <0.2 Dependent Table 3 No Authors replied ML - ok NA NA NA
F002 Barbosa_2018 2018 Portugal E003 Skipjack tuna Katsuwonus pelamis vertebrate marine fish 16.86 PFUnDA 11 NA Yes Steaming water-based wrapped up in aluminum foil 105 900 Yes No NA NA NA NA NA C003 Shared control NA 25.000000 1 ng/g 13.3018868 NA 0.0471698 sd technical 25.000000 1 4.1510000 NA 0.094 technical 2 ng/g <0.01 <0.04 Dependent Table 2 Yes Authors replied NA NA NA
F002 Barbosa_2018 2018 Portugal E004 Skipjack tuna Katsuwonus pelamis vertebrate marine fish 16.86 PFDoDA 12 NA No Steaming water-based wrapped up in aluminum foil 105 900 Yes No NA NA NA NA NA C003 Shared control NA 25.000000 1 ng/g 3.5731707 NA 0.0243902 sd technical 25.000000 1 3.2070000 NA 0.024 technical 2 ng/g <0.01 <0.04 Dependent Table 2 Yes Authors replied NA NA NA
F002 Barbosa_2018 2018 Portugal E005 Skipjack tuna Katsuwonus pelamis vertebrate marine fish 16.86 PFTrA 13 NA No Steaming water-based wrapped up in aluminum foil 105 900 Yes No NA NA NA NA NA C003 Shared control NA 25.000000 1 ng/g 6.5283019 NA 0.0754717 sd technical 25.000000 1 10.0380000 NA 0.075 technical 2 ng/g <0.01 <0.04 Dependent Table 2 Yes Authors replied NA NA NA
F002 Barbosa_2018 2018 Portugal E006 Skipjack tuna Katsuwonus pelamis vertebrate marine fish 16.86 PFTA 14 NA No Steaming water-based wrapped up in aluminum foil 105 900 Yes No NA NA NA NA NA C003 Shared control NA 25.000000 1 ng/g 1.3736842 NA 0.0157895 sd technical 25.000000 1 1.3320000 NA 0.021 technical 2 ng/g <0.01 <0.04 Dependent Table 2 Yes Authors replied NA NA NA
F002 Barbosa_2018 2018 Portugal E007 Skipjack tuna Katsuwonus pelamis vertebrate marine fish 16.86 PFOS 8 total Yes Steaming water-based wrapped up in aluminum foil 105 900 Yes No NA NA NA NA NA C003 Shared control NA 25.000000 1 ng/g 0.6467391 NA 0.0054348 sd technical 25.000000 1 0.3020000 NA 0.008 technical 2 ng/g <0.01 <0.04 Dependent Table 2 Yes Authors replied NA NA NA
F002 Barbosa_2018 2018 Portugal E008 Skipjack tuna Katsuwonus pelamis vertebrate marine fish 16.86 PFDA 10 NA Yes Steaming water-based wrapped up in aluminum foil 105 900 Yes No NA NA NA NA NA C003 Shared control NA 25.000000 1 ng/g 0.0250000 <LOQ NA sd technical 25.000000 1 0.0870000 NA 0.013 technical 2 ng/g <0.01 <0.04 Dependent Table 2 Yes Authors replied NA NA NA
F002 Barbosa_2018 2018 Portugal E009 European plaice Pleuronectes platessa vertebrate marine fish 8.70 PFOS 8 total Yes Steaming water-based wrapped up in aluminum foil 105 900 Yes No NA NA NA NA NA C004 Shared control NA 25.000000 1 ng/g 0.2472826 NA 0.0081522 sd technical 25.000000 1 0.2530000 NA 0.005 technical 2 ng/g <0.01 <0.04 Dependent Table 2 Yes Authors replied NA NA NA
F002 Barbosa_2018 2018 Portugal E010 blue mussel Mytilus edulis invertebrate mollusca 6.77 PFBA 3 NA No Steaming water-based wrapped up in aluminum foil 105 900 Yes No NA NA NA NA NA C005 Shared control NA 50.000000 1 ng/g 0.0250000 <LOQ NA sd technical 50.000000 1 0.2080000 NA 0.009 technical 2 ng/g <0.01 <0.04 Dependent Table 2 Yes Authors replied. We assume that the mussels were cut in half. The paper does not state this clearly but it was our assumptions that they did not use the whole mussle for each treatment. NA NA NA
F002 Barbosa_2018 2018 Portugal E011 blue mussel Mytilus edulis invertebrate mollusca 6.77 PFDA 10 NA Yes Steaming water-based wrapped up in aluminum foil 105 900 Yes No NA NA NA NA NA C005 Shared control NA 50.000000 1 ng/g 0.0241860 NA 0.0074419 sd technical 50.000000 1 0.0250000 <LOQ NA technical 2 ng/g <0.01 <0.04 Dependent Table 2 Yes Authors replied. We assume that the mussels were cut in half. The paper does not state this clearly but it was our assumptions that they did not use the whole mussle for each treatment. NA NA NA
F003 Bhavsar_2014 2014 Canada E012 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 14.40 PFNA 9 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1042160 105.5500 C006 Shared control NA 5.000000 5 ng/g 0.0670000 NA 0.0950000 sd biological 5.000000 5 0.0860000 NA 0.135 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. ML 0.0950000 0.135 0.1042160
F003 Bhavsar_2014 2014 Canada E013 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 14.40 PFDA 10 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1042160 105.5500 C006 Shared control NA 5.000000 5 ng/g 0.1560000 NA 0.1970000 sd biological 5.000000 5 0.1920000 NA 0.266 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1970000 0.266 0.1042160
F003 Bhavsar_2014 2014 Canada E014 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 14.40 PFUnDA 11 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1042160 105.5500 C006 Shared control NA 5.000000 5 ng/g 0.1860000 NA 0.2250000 sd biological 5.000000 5 0.2340000 NA 0.291 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2250000 0.291 0.1042160
F003 Bhavsar_2014 2014 Canada E015 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 14.40 PFDoDA 12 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1042160 105.5500 C006 Shared control NA 5.000000 5 ng/g 0.0800000 NA 0.0730000 sd biological 5.000000 5 0.1010000 NA 0.095 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0730000 0.095 0.1042160
F003 Bhavsar_2014 2014 Canada E016 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 14.40 PFTrA 13 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1042160 105.5500 C006 Shared control NA 5.000000 5 ng/g 0.2150000 NA 0.1830000 sd biological 5.000000 5 0.2590000 NA 0.241 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1830000 0.241 0.1042160
F003 Bhavsar_2014 2014 Canada E017 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 14.40 PFTA 14 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1042160 105.5500 C006 Shared control NA 5.000000 5 ng/g 0.0760000 NA 0.0550000 sd biological 5.000000 5 0.0830000 NA 0.073 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0550000 0.073 0.1042160
F003 Bhavsar_2014 2014 Canada E019 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 14.40 PFOS 8 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1042160 105.5500 C006 Shared control NA 5.000000 5 ng/g 12.7000000 NA 12.6100000 sd biological 5.000000 5 16.5600000 NA 18 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 12.6100000 18 0.1042160
F003 Bhavsar_2014 2014 Canada E020 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 14.40 PFDS 10 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1042160 105.5500 C006 Shared control NA 5.000000 5 ng/g 0.3030000 NA 0.2840000 sd biological 5.000000 5 0.3970000 NA 0.433 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2840000 0.433 0.1042160
F003 Bhavsar_2014 2014 Canada E021 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 14.40 6:6PFPIA 12 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1042160 105.5500 C006 Shared control NA 5.000000 5 ng/g 0.0030000 NA 0.0030000 sd biological 5.000000 5 0.0020000 NA 0.002 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0030000 0.002 0.1042160
F003 Bhavsar_2014 2014 Canada E022 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 14.40 6:8PFPIA 14 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1042160 105.5500 C006 Shared control NA 5.000000 5 ng/g 0.0170000 NA 0.0230000 sd biological 5.000000 5 0.0100000 NA 0.016 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0230000 0.016 0.1042160
F003 Bhavsar_2014 2014 Canada E023 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 19.68 PFNA 9 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0033813 100.8500 C007 Shared control NA 5.000000 5 ng/g 0.0670000 NA 0.0950000 sd biological 5.000000 5 0.0830000 NA 0.118 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0950000 0.118 0.0033813
F003 Bhavsar_2014 2014 Canada E024 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 19.68 PFDA 10 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0033813 100.8500 C007 Shared control NA 5.000000 5 ng/g 0.1560000 NA 0.1970000 sd biological 5.000000 5 0.1900000 NA 0.232 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1970000 0.232 0.0033813
F003 Bhavsar_2014 2014 Canada E025 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 19.68 PFUnDA 11 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0033813 100.8500 C007 Shared control NA 5.000000 5 ng/g 0.1860000 NA 0.2250000 sd biological 5.000000 5 0.2560000 NA 0.31 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2250000 0.31 0.0033813
F003 Bhavsar_2014 2014 Canada E026 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 19.68 PFDoDA 12 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0033813 100.8500 C007 Shared control NA 5.000000 5 ng/g 0.0800000 NA 0.0730000 sd biological 5.000000 5 0.1000000 NA 0.08 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0730000 0.08 0.0033813
F003 Bhavsar_2014 2014 Canada E027 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 19.68 PFTrA 13 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0033813 100.8500 C007 Shared control NA 5.000000 5 ng/g 0.2150000 NA 0.1830000 sd biological 5.000000 5 0.2850000 NA 0.234 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1830000 0.234 0.0033813
F003 Bhavsar_2014 2014 Canada E028 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 19.68 PFTA 14 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0033813 100.8500 C007 Shared control NA 5.000000 5 ng/g 0.0760000 NA 0.0550000 sd biological 5.000000 5 0.0830000 NA 0.071 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0550000 0.071 0.0033813
F003 Bhavsar_2014 2014 Canada E030 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 19.68 PFOS 8 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0033813 100.8500 C007 Shared control NA 5.000000 5 ng/g 12.7000000 NA 12.6100000 sd biological 5.000000 5 16.4500000 NA 15.63 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 12.6100000 15.63 0.0033813
F003 Bhavsar_2014 2014 Canada E031 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 19.68 PFDS 10 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0033813 100.8500 C007 Shared control NA 5.000000 5 ng/g 0.3030000 NA 0.2840000 sd biological 5.000000 5 0.3920000 NA 0.359 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2840000 0.359 0.0033813
F003 Bhavsar_2014 2014 Canada E032 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 19.68 6:6PFPIA 12 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0033813 100.8500 C007 Shared control NA 5.000000 5 ng/g 0.0030000 NA 0.0030000 sd biological 5.000000 5 0.0020000 NA 0.003 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0030000 0.003 0.0033813
F003 Bhavsar_2014 2014 Canada E033 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 19.68 6:8PFPIA 14 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0033813 100.8500 C007 Shared control NA 5.000000 5 ng/g 0.0170000 NA 0.0230000 sd biological 5.000000 5 0.0140000 NA 0.022 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0230000 0.022 0.0033813
F003 Bhavsar_2014 2014 Canada E034 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 18.68 PFNA 9 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1000364 109.9600 C008 Shared control NA 5.000000 5 ng/g 0.0670000 NA 0.0950000 sd biological 5.000000 5 0.0780000 NA 0.114 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0950000 0.114 0.1000364
F003 Bhavsar_2014 2014 Canada E035 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 18.68 PFDA 10 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1000364 109.9600 C008 Shared control NA 5.000000 5 ng/g 0.1560000 NA 0.1970000 sd biological 5.000000 5 0.1820000 NA 0.222 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1970000 0.222 0.1000364
F003 Bhavsar_2014 2014 Canada E036 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 18.68 PFUnDA 11 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1000364 109.9600 C008 Shared control NA 5.000000 5 ng/g 0.1860000 NA 0.2250000 sd biological 5.000000 5 0.2270000 NA 0.255 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2250000 0.255 0.1000364
F003 Bhavsar_2014 2014 Canada E037 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 18.68 PFDoDA 12 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1000364 109.9600 C008 Shared control NA 5.000000 5 ng/g 0.0800000 NA 0.0730000 sd biological 5.000000 5 0.0960000 NA 0.081 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0730000 0.081 0.1000364
F003 Bhavsar_2014 2014 Canada E038 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 18.68 PFTrA 13 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1000364 109.9600 C008 Shared control NA 5.000000 5 ng/g 0.2150000 NA 0.1830000 sd biological 5.000000 5 0.2750000 NA 0.216 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1830000 0.216 0.1000364
F003 Bhavsar_2014 2014 Canada E039 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 18.68 PFTA 14 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1000364 109.9600 C008 Shared control NA 5.000000 5 ng/g 0.0760000 NA 0.0550000 sd biological 5.000000 5 0.0870000 NA 0.067 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0550000 0.067 0.1000364
F003 Bhavsar_2014 2014 Canada E041 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 18.68 PFOS 8 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1000364 109.9600 C008 Shared control NA 5.000000 5 ng/g 12.7000000 NA 12.6100000 sd biological 5.000000 5 16.0300000 NA 15.19 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 12.6100000 15.19 0.1000364
F003 Bhavsar_2014 2014 Canada E042 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 18.68 PFDS 10 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1000364 109.9600 C008 Shared control NA 5.000000 5 ng/g 0.3030000 NA 0.2840000 sd biological 5.000000 5 0.3930000 NA 0.369 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2840000 0.369 0.1000364
F003 Bhavsar_2014 2014 Canada E043 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 18.68 6:6PFPIA 12 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1000364 109.9600 C008 Shared control NA 5.000000 5 ng/g 0.0030000 NA 0.0030000 sd biological 5.000000 5 0.0020000 NA 0.003 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0030000 0.003 0.1000364
F003 Bhavsar_2014 2014 Canada E044 Chinook salmon Oncorhynchus tshawytscha vertebrate marine fish 18.68 6:8PFPIA 14 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1000364 109.9600 C008 Shared control NA 5.000000 5 ng/g 0.0170000 NA 0.0230000 sd biological 5.000000 5 0.0130000 NA 0.022 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0230000 0.022 0.1000364
F003 Bhavsar_2014 2014 Canada E045 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 PFNA 9 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C009 Shared control NA 5.000000 5 ng/g 0.0920000 NA 0.0300000 sd biological 5.000000 5 0.0990000 NA 0.022 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0300000 0.022 0.1114940
F003 Bhavsar_2014 2014 Canada E046 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 PFDA 10 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C009 Shared control NA 5.000000 5 ng/g 0.5180000 NA 0.1070000 sd biological 5.000000 5 0.5660000 NA 0.138 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1070000 0.138 0.1114940
F003 Bhavsar_2014 2014 Canada E047 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 PFUnDA 11 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C009 Shared control NA 5.000000 5 ng/g 0.7120000 NA 0.1580000 sd biological 5.000000 5 0.8040000 NA 0.167 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1580000 0.167 0.1114940
F003 Bhavsar_2014 2014 Canada E048 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 PFDoDA 12 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C009 Shared control NA 5.000000 5 ng/g 0.9890000 NA 0.3170000 sd biological 5.000000 5 1.0960000 NA 0.396 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.3170000 0.396 0.1114940
F003 Bhavsar_2014 2014 Canada E049 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 PFTrA 13 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C009 Shared control NA 5.000000 5 ng/g 0.7790000 NA 0.4400000 sd biological 5.000000 5 0.7740000 NA 0.332 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.4400000 0.332 0.1114940
F003 Bhavsar_2014 2014 Canada E050 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 PFTA 14 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C009 Shared control NA 5.000000 5 ng/g 0.9510000 NA 0.6470000 sd biological 5.000000 5 1.1400000 NA 0.874 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.6470000 0.874 0.1114940
F003 Bhavsar_2014 2014 Canada E051 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 PFHxS 6 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C009 Shared control NA 5.000000 5 ng/g 0.2920000 NA 0.3190000 sd biological 5.000000 5 0.3410000 NA 0.391 biological NA ng/g Probably <0.006 Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.3190000 0.391 0.1114940
F003 Bhavsar_2014 2014 Canada E052 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 PFOS 8 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C009 Shared control NA 5.000000 5 ng/g 27.1700000 NA 7.7680000 sd biological 5.000000 5 30.5200000 NA 9.254 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 7.7680000 9.254 0.1114940
F003 Bhavsar_2014 2014 Canada E053 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 PFDS 10 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C009 Shared control NA 5.000000 5 ng/g 0.9110000 NA 0.5320000 sd biological 5.000000 5 1.0840000 NA 0.571 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.5320000 0.571 0.1114940
F003 Bhavsar_2014 2014 Canada E054 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 6:6PFPIA 12 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C009 Shared control NA 5.000000 5 ng/g 0.0980000 NA 0.0600000 sd biological 5.000000 5 0.1050000 NA 0.06 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0600000 0.06 0.1114940
F003 Bhavsar_2014 2014 Canada E055 Common carp Cyprinus carpio vertebrate freshwater fish 15.47 6:8PFPIA 14 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.1114940 98.6600 C010 Shared control NA 5.000000 5 ng/g 0.1670000 NA 0.0770000 sd biological 5.000000 5 0.1800000 NA 0.084 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0770000 0.084 0.1114940
F003 Bhavsar_2014 2014 Canada E056 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 PFNA 9 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 0.0920000 NA 0.0300000 sd biological 5.000000 5 0.1050000 NA 0.037 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0300000 0.037 0.0034647
F003 Bhavsar_2014 2014 Canada E057 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 PFDA 10 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 0.5180000 NA 0.1070000 sd biological 5.000000 5 0.5480000 NA 0.121 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1070000 0.121 0.0034647
F003 Bhavsar_2014 2014 Canada E058 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 PFUnDA 11 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 0.7120000 NA 0.1580000 sd biological 5.000000 5 0.8480000 NA 0.155 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1580000 0.155 0.0034647
F003 Bhavsar_2014 2014 Canada E059 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 PFDoDA 12 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 0.9890000 NA 0.3170000 sd biological 5.000000 5 1.1080000 NA 0.404 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.3170000 0.404 0.0034647
F003 Bhavsar_2014 2014 Canada E060 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 PFTrA 13 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 0.7790000 NA 0.4400000 sd biological 5.000000 5 0.8280000 NA 0.418 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.4400000 0.418 0.0034647
F003 Bhavsar_2014 2014 Canada E061 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 PFTA 14 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 0.9510000 NA 0.6470000 sd biological 5.000000 5 1.1150000 NA 0.769 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.6470000 0.769 0.0034647
F003 Bhavsar_2014 2014 Canada E062 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 PFHxS 6 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 0.2920000 NA 0.3190000 sd biological 5.000000 5 0.2910000 NA 0.346 biological NA ng/g Probably <0.006 Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.3190000 0.346 0.0034647
F003 Bhavsar_2014 2014 Canada E063 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 PFOS 8 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 27.1700000 NA 7.7680000 sd biological 5.000000 5 28.3700000 NA 11.99 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 7.7680000 11.99 0.0034647
F003 Bhavsar_2014 2014 Canada E064 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 PFDS 10 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 0.9110000 NA 0.5320000 sd biological 5.000000 5 1.0450000 NA 0.623 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.5320000 0.623 0.0034647
F003 Bhavsar_2014 2014 Canada E065 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 6:6PFPIA 12 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 0.0980000 NA 0.0600000 sd biological 5.000000 5 0.1170000 NA 0.073 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0600000 0.073 0.0034647
F003 Bhavsar_2014 2014 Canada E066 Common carp Cyprinus carpio vertebrate freshwater fish 19.68 6:8PFPIA 14 No Broiling oil-based NA 300 600 No Yes canola oil 0.341 0.341 0.0034647 98.4200 C010 Shared control NA 5.000000 5 ng/g 0.1670000 NA 0.0770000 sd biological 5.000000 5 0.1900000 NA 0.08 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0770000 0.08 0.0034647
F003 Bhavsar_2014 2014 Canada E067 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 PFNA 9 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 0.0920000 NA 0.0300000 sd biological 5.000000 5 0.1010000 NA 0.035 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0300000 0.035 0.1099340
F003 Bhavsar_2014 2014 Canada E068 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 PFDA 10 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 0.5180000 NA 0.1070000 sd biological 5.000000 5 0.5690000 NA 0.108 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1070000 0.108 0.1099340
F003 Bhavsar_2014 2014 Canada E069 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 PFUnDA 11 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 0.7120000 NA 0.1580000 sd biological 5.000000 5 0.8300000 NA 0.13 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1580000 0.13 0.1099340
F003 Bhavsar_2014 2014 Canada E070 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 PFDoDA 12 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 0.9890000 NA 0.3170000 sd biological 5.000000 5 1.0440000 NA 0.356 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.3170000 0.356 0.1099340
F003 Bhavsar_2014 2014 Canada E071 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 PFTrA 13 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 0.7790000 NA 0.4400000 sd biological 5.000000 5 0.7460000 NA 0.283 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.4400000 0.283 0.1099340
F003 Bhavsar_2014 2014 Canada E072 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 PFTA 14 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 0.9510000 NA 0.6470000 sd biological 5.000000 5 1.0670000 NA 0.754 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.6470000 0.754 0.1099340
F003 Bhavsar_2014 2014 Canada E073 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 PFHxS 6 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 0.2920000 NA 0.3190000 sd biological 5.000000 5 0.3590000 NA 0.428 biological NA ng/g Probably <0.006 Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.3190000 0.428 0.1099340
F003 Bhavsar_2014 2014 Canada E074 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 PFOS 8 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 27.1700000 NA 7.7680000 sd biological 5.000000 5 28.1100000 NA 10.93 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 7.7680000 10.93 0.1099340
F003 Bhavsar_2014 2014 Canada E075 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 PFDS 10 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 0.9110000 NA 0.5320000 sd biological 5.000000 5 1.0900000 NA 0.618 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.5320000 0.618 0.1099340
F003 Bhavsar_2014 2014 Canada E076 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 6:6PFPIA 12 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 0.0980000 NA 0.0600000 sd biological 5.000000 5 0.1060000 NA 0.065 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0600000 0.065 0.1099340
F003 Bhavsar_2014 2014 Canada E077 Common carp Cyprinus carpio vertebrate freshwater fish 14.91 6:8PFPIA 14 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.1099340 100.0600 C011 Shared control NA 5.000000 5 ng/g 0.1670000 NA 0.0770000 sd biological 5.000000 5 0.1880000 NA 0.075 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0770000 0.075 0.1099340
F003 Bhavsar_2014 2014 Canada E078 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 PFNA 9 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 0.2980000 NA 0.1430000 sd biological 4.000000 4 0.3700000 NA 0.189 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1430000 0.189 0.0517671
F003 Bhavsar_2014 2014 Canada E079 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 PFDA 10 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 0.4230000 NA 0.1860000 sd biological 4.000000 4 0.5100000 NA 0.232 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1860000 0.232 0.0517671
F003 Bhavsar_2014 2014 Canada E080 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 PFUnDA 11 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 0.5600000 NA 0.2510000 sd biological 4.000000 4 0.6850000 NA 0.293 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2510000 0.293 0.0517671
F003 Bhavsar_2014 2014 Canada E081 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 PFDoDA 12 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 0.1980000 NA 0.0950000 sd biological 4.000000 4 0.2210000 NA 0.114 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0950000 0.114 0.0517671
F003 Bhavsar_2014 2014 Canada E082 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 PFTrA 13 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 0.4610000 NA 0.2170000 sd biological 4.000000 4 0.4840000 NA 0.264 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2170000 0.264 0.0517671
F003 Bhavsar_2014 2014 Canada E083 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 PFTA 14 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 0.1280000 NA 0.0510000 sd biological 4.000000 4 0.1370000 NA 0.051 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0510000 0.051 0.0517671
F003 Bhavsar_2014 2014 Canada E084 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 PFHxS 6 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 0.2580000 NA 0.0550000 sd biological 4.000000 4 0.2480000 NA 0.061 biological NA ng/g Probably <0.006 Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0550000 0.061 0.0517671
F003 Bhavsar_2014 2014 Canada E085 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 PFOS 8 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 18.1800000 NA 6.6860000 sd biological 4.000000 4 20.5100000 NA 6.752 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 6.6860000 6.752 0.0517671
F003 Bhavsar_2014 2014 Canada E086 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 PFDS 10 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 0.4560000 NA 0.1770000 sd biological 4.000000 4 0.4740000 NA 0.196 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1770000 0.196 0.0517671
F003 Bhavsar_2014 2014 Canada E087 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 6:6PFPIA 12 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 0.0020000 NA 0.0010000 sd biological 4.000000 4 0.0020000 NA 0.002 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0010000 0.002 0.0517671
F003 Bhavsar_2014 2014 Canada E088 Lake trout Salvelinus namaycush vertebrate freshwater fish 10.13 6:8PFPIA 14 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0517671 212.4900 C012 Shared control NA 4.000000 4 ng/g 0.0170000 NA 0.0090000 sd biological 4.000000 4 0.0180000 NA 0.009 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0090000 0.009 0.0517671
F003 Bhavsar_2014 2014 Canada E089 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 PFNA 9 No Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 0.2980000 NA 0.1430000 sd biological 4.000000 4 0.3580000 NA 0.17 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1430000 0.17 0.0026586
F003 Bhavsar_2014 2014 Canada E090 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 PFDA 10 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 0.4230000 NA 0.1860000 sd biological 4.000000 4 0.5280000 NA 0.233 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1860000 0.233 0.0026586
F003 Bhavsar_2014 2014 Canada E091 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 PFUnDA 11 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 0.5600000 NA 0.2510000 sd biological 4.000000 4 0.7250000 NA 0.345 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2510000 0.345 0.0026586
F003 Bhavsar_2014 2014 Canada E092 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 PFDoDA 12 No Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 0.1980000 NA 0.0950000 sd biological 4.000000 4 0.2370000 NA 0.111 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0950000 0.111 0.0026586
F003 Bhavsar_2014 2014 Canada E093 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 PFTrA 13 No Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 0.4610000 NA 0.2170000 sd biological 4.000000 4 0.5580000 NA 0.28 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2170000 0.28 0.0026586
F003 Bhavsar_2014 2014 Canada E094 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 PFTA 14 No Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 0.1280000 NA 0.0510000 sd biological 4.000000 4 0.1490000 NA 0.068 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0510000 0.068 0.0026586
F003 Bhavsar_2014 2014 Canada E095 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 PFHxS 6 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 0.2580000 NA 0.0550000 sd biological 4.000000 4 0.2630000 NA 0.087 biological NA ng/g Probably <0.006 Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0550000 0.087 0.0026586
F003 Bhavsar_2014 2014 Canada E096 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 PFOS 8 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 18.1800000 NA 6.6860000 sd biological 4.000000 4 22.1100000 NA 7.897 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 6.6860000 7.897 0.0026586
F003 Bhavsar_2014 2014 Canada E097 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 PFDS 10 No Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 0.4560000 NA 0.1770000 sd biological 4.000000 4 0.5600000 NA 0.226 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1770000 0.226 0.0026586
F003 Bhavsar_2014 2014 Canada E098 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 6:6PFPIA 12 No Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 0.0020000 NA 0.0010000 sd biological 4.000000 4 0.0120000 NA 0.018 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0010000 0.018 0.0026586
F003 Bhavsar_2014 2014 Canada E099 Lake trout Salvelinus namaycush vertebrate freshwater fish 15.23 6:8PFPIA 14 No Broiling oil-based NA 300 600 No Yes canola oil 0.528 0.528 0.0026586 198.6000 C013 Shared control NA 4.000000 4 ng/g 0.0170000 NA 0.0090000 sd biological 4.000000 4 0.0160000 NA 0.006 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0090000 0.006 0.0026586
F003 Bhavsar_2014 2014 Canada E100 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 PFNA 9 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 0.2980000 NA 0.1430000 sd biological 4.000000 4 0.3740000 NA 0.181 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1430000 0.181 0.0511604
F003 Bhavsar_2014 2014 Canada E101 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 PFDA 10 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 0.4230000 NA 0.1860000 sd biological 4.000000 4 0.4930000 NA 0.207 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1860000 0.207 0.0511604
F003 Bhavsar_2014 2014 Canada E102 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 PFUnDA 11 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 0.5600000 NA 0.2510000 sd biological 4.000000 4 0.6830000 NA 0.286 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2510000 0.286 0.0511604
F003 Bhavsar_2014 2014 Canada E103 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 PFDoDA 12 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 0.1980000 NA 0.0950000 sd biological 4.000000 4 0.2320000 NA 0.103 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0950000 0.103 0.0511604
F003 Bhavsar_2014 2014 Canada E104 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 PFTrA 13 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 0.4610000 NA 0.2170000 sd biological 4.000000 4 0.5190000 NA 0.212 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.2170000 0.212 0.0511604
F003 Bhavsar_2014 2014 Canada E105 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 PFTA 14 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 0.1280000 NA 0.0510000 sd biological 4.000000 4 0.1290000 NA 0.045 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0510000 0.045 0.0511604
F003 Bhavsar_2014 2014 Canada E106 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 PFHxS 6 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 0.2580000 NA 0.0550000 sd biological 4.000000 4 0.2450000 NA 0.077 biological NA ng/g Probably <0.006 Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0550000 0.077 0.0511604
F003 Bhavsar_2014 2014 Canada E107 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 PFOS 8 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 18.1800000 NA 6.6860000 sd biological 4.000000 4 21.6700000 NA 8.008 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 6.6860000 8.008 0.0511604
F003 Bhavsar_2014 2014 Canada E108 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 PFDS 10 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 0.4560000 NA 0.1770000 sd biological 4.000000 4 0.5160000 NA 0.244 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.1770000 0.244 0.0511604
F003 Bhavsar_2014 2014 Canada E109 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 6:6PFPIA 12 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 0.0020000 NA 0.0010000 sd biological 4.000000 4 0.0020000 NA 0.001 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0010000 0.001 0.0511604
F003 Bhavsar_2014 2014 Canada E110 Lake trout Salvelinus namaycush vertebrate freshwater fish 11.53 6:8PFPIA 14 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0511604 215.0100 C014 Shared control NA 4.000000 4 ng/g 0.0170000 NA 0.0090000 sd biological 4.000000 4 0.0160000 NA 0.006 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0090000 0.006 0.0511604
F003 Bhavsar_2014 2014 Canada E111 Walleye Sander vitreus vertebrate freshwater fish 18.71 PFNA 9 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 0.0630000 NA 0.0210000 sd biological 5.000000 5 0.0790000 NA 0.023 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0210000 0.023 0.0583152
F003 Bhavsar_2014 2014 Canada E112 Walleye Sander vitreus vertebrate freshwater fish 18.71 PFDA 10 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 0.2480000 NA 0.0400000 sd biological 5.000000 5 0.3490000 NA 0.094 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0400000 0.094 0.0583152
F003 Bhavsar_2014 2014 Canada E113 Walleye Sander vitreus vertebrate freshwater fish 18.71 PFUnDA 11 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 0.2390000 NA 0.0400000 sd biological 5.000000 5 0.3330000 NA 0.091 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0400000 0.091 0.0583152
F003 Bhavsar_2014 2014 Canada E114 Walleye Sander vitreus vertebrate freshwater fish 18.71 PFDoDA 12 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 0.1050000 NA 0.0190000 sd biological 5.000000 5 0.1330000 NA 0.012 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0190000 0.012 0.0583152
F003 Bhavsar_2014 2014 Canada E115 Walleye Sander vitreus vertebrate freshwater fish 18.71 PFTrA 13 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 0.1490000 NA 0.0200000 sd biological 5.000000 5 0.1800000 NA 0.021 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0200000 0.021 0.0583152
F003 Bhavsar_2014 2014 Canada E116 Walleye Sander vitreus vertebrate freshwater fish 18.71 PFTA 14 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 0.0690000 NA 0.0090000 sd biological 5.000000 5 0.0930000 NA 0.023 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0090000 0.023 0.0583152
F003 Bhavsar_2014 2014 Canada E117 Walleye Sander vitreus vertebrate freshwater fish 18.71 PFHxS 6 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 0.0800000 NA 0.0250000 sd biological 5.000000 5 0.0980000 NA 0.034 biological NA ng/g Probably <0.006 Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0250000 0.034 0.0583152
F003 Bhavsar_2014 2014 Canada E118 Walleye Sander vitreus vertebrate freshwater fish 18.71 PFOS 8 Yes Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 36.7900000 NA 1.6240000 sd biological 5.000000 5 45.0900000 NA 3.709 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 1.6240000 3.709 0.0583152
F003 Bhavsar_2014 2014 Canada E119 Walleye Sander vitreus vertebrate freshwater fish 18.71 PFDS 10 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 0.1060000 NA 0.0240000 sd biological 5.000000 5 0.1780000 NA 0.094 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0240000 0.094 0.0583152
F003 Bhavsar_2014 2014 Canada E120 Walleye Sander vitreus vertebrate freshwater fish 18.71 6:6PFPIA 12 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 0.0260000 NA 0.0060000 sd biological 5.000000 5 0.0350000 NA 0.006 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0060000 0.006 0.0583152
F003 Bhavsar_2014 2014 Canada E121 Walleye Sander vitreus vertebrate freshwater fish 18.71 6:8PFPIA 14 No Baking oil-based NA 200 900 No Yes canola oil 11.000 11.000 0.0583152 188.6300 C014 Shared control NA 5.000000 5 ng/g 0.0670000 NA 0.0100000 sd biological 5.000000 5 0.0630000 NA 0.017 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0100000 0.017 0.0583152
F003 Bhavsar_2014 2014 Canada E122 Walleye Sander vitreus vertebrate freshwater fish 24.09 PFNA 9 No Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 0.0630000 NA 0.0210000 sd biological 5.000000 5 0.0740000 NA 0.014 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0210000 0.014 0.0028457
F003 Bhavsar_2014 2014 Canada E123 Walleye Sander vitreus vertebrate freshwater fish 24.09 PFDA 10 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 0.2480000 NA 0.0400000 sd biological 5.000000 5 0.3380000 NA 0.098 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0400000 0.098 0.0028457
F003 Bhavsar_2014 2014 Canada E124 Walleye Sander vitreus vertebrate freshwater fish 24.09 PFUnDA 11 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 0.2390000 NA 0.0400000 sd biological 5.000000 5 0.3480000 NA 0.102 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0400000 0.102 0.0028457
F003 Bhavsar_2014 2014 Canada E125 Walleye Sander vitreus vertebrate freshwater fish 24.09 PFDoDA 12 No Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 0.1050000 NA 0.0190000 sd biological 5.000000 5 0.1440000 NA 0.037 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0190000 0.037 0.0028457
F003 Bhavsar_2014 2014 Canada E126 Walleye Sander vitreus vertebrate freshwater fish 24.09 PFTrA 13 No Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 0.1490000 NA 0.0200000 sd biological 5.000000 5 0.2170000 NA 0.041 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0200000 0.041 0.0028457
F003 Bhavsar_2014 2014 Canada E127 Walleye Sander vitreus vertebrate freshwater fish 24.09 PFTA 14 No Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 0.0690000 NA 0.0090000 sd biological 5.000000 5 0.0940000 NA 0.025 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0090000 0.025 0.0028457
F003 Bhavsar_2014 2014 Canada E128 Walleye Sander vitreus vertebrate freshwater fish 24.09 PFHxS 6 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 0.0800000 NA 0.0250000 sd biological 5.000000 5 0.0880000 NA 0.036 biological NA ng/g Probably <0.006 Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0250000 0.036 0.0028457
F003 Bhavsar_2014 2014 Canada E129 Walleye Sander vitreus vertebrate freshwater fish 24.09 PFOS 8 Yes Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 36.7900000 NA 1.6240000 sd biological 5.000000 5 52.6900000 NA 14.62 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 1.6240000 14.62 0.0028457
F003 Bhavsar_2014 2014 Canada E130 Walleye Sander vitreus vertebrate freshwater fish 24.09 PFDS 10 No Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 0.1060000 NA 0.0240000 sd biological 5.000000 5 0.1890000 NA 0.08 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0240000 0.08 0.0028457
F003 Bhavsar_2014 2014 Canada E131 Walleye Sander vitreus vertebrate freshwater fish 24.09 6:6PFPIA 12 No Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 0.0260000 NA 0.0060000 sd biological 5.000000 5 0.0400000 NA 0.008 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0060000 0.008 0.0028457
F003 Bhavsar_2014 2014 Canada E132 Walleye Sander vitreus vertebrate freshwater fish 24.09 6:8PFPIA 14 No Broiling oil-based NA 300 600 No Yes canola oil 0.506 0.506 0.0028457 177.8100 C015 Shared control NA 5.000000 5 ng/g 0.0670000 NA 0.0100000 sd biological 5.000000 5 0.0870000 NA 0.012 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0100000 0.012 0.0028457
F003 Bhavsar_2014 2014 Canada E133 Walleye Sander vitreus vertebrate freshwater fish 14.45 PFNA 9 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 0.0630000 NA 0.0210000 sd biological 5.000000 5 0.0670000 NA 0.015 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0210000 0.015 0.0615832
F003 Bhavsar_2014 2014 Canada E134 Walleye Sander vitreus vertebrate freshwater fish 14.45 PFDA 10 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 0.2480000 NA 0.0400000 sd biological 5.000000 5 0.2990000 NA 0.072 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0400000 0.072 0.0615832
F003 Bhavsar_2014 2014 Canada E135 Walleye Sander vitreus vertebrate freshwater fish 14.45 PFUnDA 11 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 0.2390000 NA 0.0400000 sd biological 5.000000 5 0.3070000 NA 0.076 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0400000 0.076 0.0615832
F003 Bhavsar_2014 2014 Canada E136 Walleye Sander vitreus vertebrate freshwater fish 14.45 PFDoDA 12 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 0.1050000 NA 0.0190000 sd biological 5.000000 5 0.1290000 NA 0.049 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0190000 0.049 0.0615832
F003 Bhavsar_2014 2014 Canada E137 Walleye Sander vitreus vertebrate freshwater fish 14.45 PFTrA 13 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 0.1490000 NA 0.0200000 sd biological 5.000000 5 0.1790000 NA 0.054 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0200000 0.054 0.0615832
F003 Bhavsar_2014 2014 Canada E138 Walleye Sander vitreus vertebrate freshwater fish 14.45 PFTA 14 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 0.0690000 NA 0.0090000 sd biological 5.000000 5 0.0870000 NA 0.034 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0090000 0.034 0.0615832
F003 Bhavsar_2014 2014 Canada E139 Walleye Sander vitreus vertebrate freshwater fish 14.45 PFHxS 6 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 0.0800000 NA 0.0250000 sd biological 5.000000 5 0.0830000 NA 0.027 biological NA ng/g Probably <0.006 Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0250000 0.027 0.0615832
F003 Bhavsar_2014 2014 Canada E140 Walleye Sander vitreus vertebrate freshwater fish 14.45 PFOS 8 Yes Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 36.7900000 NA 1.6240000 sd biological 5.000000 5 44.5100000 NA 7.718 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 1.6240000 7.718 0.0615832
F003 Bhavsar_2014 2014 Canada E141 Walleye Sander vitreus vertebrate freshwater fish 14.45 PFDS 10 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 0.1060000 NA 0.0240000 sd biological 5.000000 5 0.1570000 NA 0.066 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0240000 0.066 0.0615832
F003 Bhavsar_2014 2014 Canada E142 Walleye Sander vitreus vertebrate freshwater fish 14.45 6:6PFPIA 12 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 0.0260000 NA 0.0060000 sd biological 5.000000 5 0.0290000 NA 0.004 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0060000 0.004 0.0615832
F003 Bhavsar_2014 2014 Canada E143 Walleye Sander vitreus vertebrate freshwater fish 14.45 6:8PFPIA 14 No Frying oil-based NA 175 600 No Yes canola oil 11.000 11.000 0.0615832 178.6200 C016 Shared control NA 5.000000 5 ng/g 0.0670000 NA 0.0100000 sd biological 5.000000 5 0.0770000 NA 0.005 biological NA ng/g Not provided Not provided Dependent Table S3 No We assumed that all specimens of one species were analysed separately and that NO pooling occured. However, we can not be fully sure. We also assumed that the provided sd was biological. 0.0100000 0.005 0.0615832
F005 DelGobbo_2008 2008 Canada E144 Catfish Ictalurus punctatus vertebrate freshwater fish NA PFOS 8 linear Yes Frying oil-based NA 163 900 No Yes sesame oil NA NA 0.0625000 NA C017 Shared control NA 19.000000 1 ng/g 1.5657252 NA NA Not available because sample size is one. technical 19.000000 1 0.9000000 NA Not provided technical 4 ng/g 0.364605839 1.093817517 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species ML NA NA 0.0625000
F005 DelGobbo_2008 2008 Canada E145 Grouper Epinephelus itajara vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based NA 163 900 No Yes sesame oil NA NA 0.0625000 NA C018 Shared control NA 14.000000 1 ng/g 1.3600000 NA NA Not available because sample size is one. technical 14.000000 1 0.0169896 LOD Not provided technical 4 ng/g 0.016989626 0.050968879 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 0.0625000
F005 DelGobbo_2008 2008 Canada E146 Grouper Epinephelus itajara vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based NA 163 900 No Yes sesame oil NA NA 0.0625000 NA C018 Shared control NA 14.000000 1 ng/g 0.3715856 LOD NA Not available because sample size is one. technical 14.000000 1 0.4700000 NA Not provided technical 4 ng/g 0.371585648 1.114756944 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 0.0625000
F005 DelGobbo_2008 2008 Canada E147 Monkfish Lophius americanus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C019 Shared control NA 9.000000 1 ng/g 0.0774969 LOD NA Not available because sample size is one. technical 9.000000 1 0.0600000 NA Not provided technical 4 ng/g 0.077496939 0.232490816 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E148 Monkfish Lophius americanus vertebrate marine fish NA PFNA 9 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C019 Shared control NA 9.000000 1 ng/g 1.3400000 NA NA Not available because sample size is one. technical 9.000000 1 0.0032120 LOD Not provided technical 4 ng/g 0.003212028 0.009636084 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E149 Monkfish Lophius americanus vertebrate marine fish NA PFUnDA 11 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C019 Shared control NA 9.000000 1 ng/g 0.0270203 LOD NA Not available because sample size is one. technical 9.000000 1 0.3900000 NA Not provided technical 4 ng/g 0.027020324 0.081060971 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E150 Monkfish Lophius americanus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C019 Shared control NA 9.000000 1 ng/g 1.3400000 NA NA Not available because sample size is one. technical 9.000000 1 0.2200000 NA Not provided technical 4 ng/g 0.233373227 0.70011968 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E151 Octopus Bathypolypus arcticus invertebrate mollusca NA PFOA 8 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C020 Shared control NA 15.000000 1 ng/g 0.7800000 NA NA Not available because sample size is one. technical 15.000000 1 0.0600000 NA Not provided technical 3 ng/g 0.026125853 0.07837756 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E152 Octopus Bathypolypus arcticus invertebrate mollusca NA PFNA 9 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C020 Shared control NA 15.000000 1 ng/g 1.2900000 NA NA Not available because sample size is one. technical 15.000000 1 0.0261259 LOD Not provided technical 3 ng/g 0.026125853 0.07837756 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E153 Octopus Bathypolypus arcticus invertebrate mollusca NA PFDA 10 NA No Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C020 Shared control NA 15.000000 1 ng/g 1.5500000 NA NA Not available because sample size is one. technical 15.000000 1 0.0120876 LOD Not provided technical 3 ng/g 0.012087592 0.036262776 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E154 Octopus Bathypolypus arcticus invertebrate mollusca NA PFUnDA 11 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C020 Shared control NA 15.000000 1 ng/g 1.8800000 NA NA Not available because sample size is one. technical 15.000000 1 1.5900000 NA Not provided technical 3 ng/g 0.023403463 0.07021039 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E155 Octopus Bathypolypus arcticus invertebrate mollusca NA PFTA 14 NA No Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C020 Shared control NA 15.000000 1 ng/g 2.6100000 NA NA Not available because sample size is one. technical 15.000000 1 0.0071943 LOD Not provided technical 3 ng/g 0.007194278 0.021582834 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E156 Octopus Bathypolypus arcticus invertebrate mollusca NA PFOS 8 linear Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C020 Shared control NA 15.000000 1 ng/g 0.5086163 LOD NA Not available because sample size is one. technical 15.000000 1 0.2300000 NA Not provided technical 3 ng/g 0.508616305 1.525848915 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E157 Red snapper Lutjanus campechanus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C021 Shared control NA 19.000000 1 ng/g 1.4600000 NA NA Not available because sample size is one. technical 19.000000 1 0.2100000 NA Not provided technical 4 ng/g 0.335745729 1.007237187 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E158 Red snapper Lutjanus campechanus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based NA 163 900 No Yes sesame oil NA NA 0.0625000 NA C021 Shared control NA 19.000000 1 ng/g 1.4600000 NA NA Not available because sample size is one. technical 19.000000 1 0.7800000 NA Not provided technical 4 ng/g 0.212707733 0.6381232 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 0.0625000
F005 DelGobbo_2008 2008 Canada E159 Sea squirt Diplosoma listerianum vertebrate tunicata NA PFOA 8 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C022 Shared control NA 22.000000 1 ng/g 1.5800000 NA NA Not available because sample size is one. technical 22.000000 1 1.5900000 NA Not provided technical 3 ng/g 0.030799263 0.092397789 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E160 Sea squirt Diplosoma listerianum vertebrate tunicata NA PFNA 9 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C022 Shared control NA 22.000000 1 ng/g 1.3200000 NA NA Not available because sample size is one. technical 22.000000 1 0.9600000 NA Not provided technical 3 ng/g 0.00466163 0.013984889 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E161 Skate Amblyraja hyperborea vertebrate rays NA PFNA 9 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C023 Shared control NA 14.000000 1 ng/g 1.0900000 NA NA Not available because sample size is one. technical 14.000000 1 0.0027709 LOD Not provided technical 4 ng/g 0.002770915 0.008312745 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E162 Skate Amblyraja hyperborea vertebrate rays NA PFUnDA 11 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C023 Shared control NA 14.000000 1 ng/g 1.5500000 NA NA Not available because sample size is one. technical 14.000000 1 1.3500000 NA Not provided technical 4 ng/g 0.012033653 0.03610096 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E163 Skate Amblyraja hyperborea vertebrate rays NA PFDoDA 12 NA No Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C023 Shared control NA 14.000000 1 ng/g 1.3300000 NA NA Not available because sample size is one. technical 14.000000 1 0.0255728 LOD Not provided technical 4 ng/g 0.025572815 0.076718446 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E164 Skate Amblyraja hyperborea vertebrate rays NA PFTA 14 NA No Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C023 Shared control NA 14.000000 1 ng/g 0.6700000 NA NA Not available because sample size is one. technical 14.000000 1 0.0070174 LOD Not provided technical 4 ng/g 0.00701744 0.021052319 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E165 Skate Amblyraja hyperborea vertebrate rays NA PFOS 8 linear Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C023 Shared control NA 14.000000 1 ng/g 1.5100000 NA NA Not available because sample size is one. technical 14.000000 1 0.8800000 NA Not provided technical 4 ng/g 0.364216663 1.092649988 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E166 Yellow croaker Larimichthys polyactis vertebrate marine fish NA PFUnDA 11 NA Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C024 Shared control NA 35.000000 1 ng/g 1.5700000 NA NA Not available because sample size is one. technical 35.000000 1 0.0179042 LOD Not provided technical 4 ng/g 0.017904207 0.05371262 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E167 Yellow croaker Larimichthys polyactis vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 420 Yes No NA NA NA 30.0000000 NA C024 Shared control NA 35.000000 1 ng/g 1.6800000 NA NA Not available because sample size is one. technical 35.000000 1 0.8900000 NA Not provided technical 4 ng/g 0.376885418 1.130656253 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 30.0000000
F005 DelGobbo_2008 2008 Canada E168 Yellow croaker Larimichthys polyactis vertebrate marine fish NA PFUnDA 11 NA Yes Frying oil-based NA 163 900 No Yes sesame oil NA NA 0.0625000 NA C025 Shared control NA 35.000000 1 ng/g 1.5700000 NA NA Not available because sample size is one. technical 35.000000 1 2.1100000 NA Not provided technical 4 ng/g 0.016586028 0.049758083 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 0.0625000
F005 DelGobbo_2008 2008 Canada E169 Yellow croaker Larimichthys polyactis vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based NA 163 900 No Yes sesame oil NA NA 0.0625000 NA C025 Shared control NA 35.000000 1 ng/g 1.6800000 NA NA Not available because sample size is one. technical 35.000000 1 0.6800000 NA Not provided technical 4 ng/g 0.392175529 1.176526586 Dependent Table 3 Yes Authors replied; scientific names of seafood species were not provided, therefore we assumed the most common local species NA NA 0.0625000
F006 Hu_2020 2020 China E170 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 14.38 PFBA 3 No Steaming water-based on a stainless-steel plate in a steamer 100 480 Yes No NA NA NA NA 70.0000 C026 Shared control NA 5.000000 5 ng/g 6.9619423 NA 7.4193907 sd biological 5.000000 5 5.3412073 NA 1.688925302 biological Not specified ng/g Not provided 12.2 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. ML 7.4193907 1.688925302 NA
F006 Hu_2020 2020 China E171 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 14.38 PFOA 8 Yes Steaming water-based on a stainless-steel plate in a steamer 100 480 Yes No NA NA NA NA 70.0000 C026 Shared control NA 5.000000 5 ng/g 0.2098410 NA 0.1560332 sd biological 5.000000 5 0.2674068 NA 0.08 biological Not specified ng/g Not provided 0.226 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 0.1560332 0.08 NA
F006 Hu_2020 2020 China E172 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 14.38 PFBS 4 Yes Steaming water-based on a stainless-steel plate in a steamer 100 480 Yes No NA NA NA NA 70.0000 C026 Shared control NA 5.000000 5 ng/g 24.8753463 NA 23.9889753 sd biological 5.000000 5 23.9801208 NA 26.845 biological Not specified ng/g Not provided 1.01 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 23.9889753 26.845 NA
F006 Hu_2020 2020 China E173 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 14.38 PFOS 8 Yes Steaming water-based on a stainless-steel plate in a steamer 100 480 Yes No NA NA NA NA 70.0000 C026 Shared control NA 5.000000 5 ng/g 86.6890380 NA 39.4592027 sd biological 5.000000 5 122.4133110 NA 62.469 biological Not specified ng/g Not provided 1.57 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 39.4592027 62.469 NA
F006 Hu_2020 2020 China E174 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 14.38 PFHpA 7 No Steaming water-based on a stainless-steel plate in a steamer 100 480 Yes No NA NA NA NA 70.0000 C026 Shared control NA 5.000000 5 ng/g 24.2980562 NA 30.6129835 sd biological 5.000000 5 55.3995680 NA 55.4 biological Not specified ng/g Not provided 0.47 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 30.6129835 55.4 NA
F006 Hu_2020 2020 China E175 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 14.38 PFDoDA 12 No Steaming water-based on a stainless-steel plate in a steamer 100 480 Yes No NA NA NA NA 70.0000 C026 Shared control NA 5.000000 5 ng/g 1.5680310 NA 0.5599538 sd biological 5.000000 5 2.2676991 NA 1.533 biological Not specified ng/g Not provided 0.093 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 0.5599538 1.533 NA
F006 Hu_2020 2020 China E176 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 14.38 PFHxS 6 Yes Steaming water-based on a stainless-steel plate in a steamer 100 480 Yes No NA NA NA NA 70.0000 C026 Shared control NA 5.000000 5 ng/g 1.8092949 NA 2.3827419 sd biological 5.000000 5 0.8685897 NA 0.303 biological Not specified ng/g Not provided 0.155 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 2.3827419 0.303 NA
F006 Hu_2020 2020 China E177 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 14.38 FOSA 8 Yes Steaming water-based on a stainless-steel plate in a steamer 100 480 Yes No NA NA NA NA 70.0000 C026 Shared control NA 5.000000 5 ng/g 2.5990437 NA 1.6889253 sd biological 5.000000 5 2.3838798 NA 1.290418258 biological Not specified ng/g Not provided 0.026 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 1.6889253 1.290418258 NA
F006 Hu_2020 2020 China E178 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 16.48 PFBA 3 No Boiling water-based NA 100 120 Yes No NA 300.000 300.000 4.2857143 70.0000 C027 Shared control NA 5.000000 5 ng/g 6.9619423 NA 7.4193907 sd biological 5.000000 5 4.9146982 NA 7.434 biological Not specified ng/g Not provided 12.2 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 7.4193907 7.434 4.2857143
F006 Hu_2020 2020 China E179 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 16.48 PFOA 8 Yes Boiling water-based NA 100 120 Yes No NA 300.000 300.000 4.2857143 70.0000 C027 Shared control NA 5.000000 5 ng/g 0.2098410 NA 0.1560332 sd biological 5.000000 5 0.1932566 NA 0.071 biological Not specified ng/g Not provided 0.226 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 0.1560332 0.071 4.2857143
F006 Hu_2020 2020 China E180 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 16.48 PFBS 4 Yes Boiling water-based NA 100 120 Yes No NA 300.000 300.000 4.2857143 70.0000 C027 Shared control NA 5.000000 5 ng/g 24.8753463 NA 23.9889753 sd biological 5.000000 5 10.8230680 NA 7.461 biological Not specified ng/g Not provided 1.01 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 23.9889753 7.461 4.2857143
F006 Hu_2020 2020 China E181 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 16.48 PFOS 8 Yes Boiling water-based NA 100 120 Yes No NA 300.000 300.000 4.2857143 70.0000 C027 Shared control NA 5.000000 5 ng/g 86.6890380 NA 39.4592027 sd biological 5.000000 5 97.7348993 NA 23.173 biological Not specified ng/g Not provided 1.57 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 39.4592027 23.173 4.2857143
F006 Hu_2020 2020 China E182 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 16.48 PFHpA 7 No Boiling water-based NA 100 120 Yes No NA 300.000 300.000 4.2857143 70.0000 C027 Shared control NA 5.000000 5 ng/g 24.2980562 NA 30.6129835 sd biological 5.000000 5 13.7149028 NA 23.604 biological Not specified ng/g Not provided 0.47 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 30.6129835 23.604 4.2857143
F006 Hu_2020 2020 China E183 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 16.48 PFDoDA 12 No Boiling water-based NA 100 120 Yes No NA 300.000 300.000 4.2857143 70.0000 C027 Shared control NA 5.000000 5 ng/g 1.5680310 NA 0.5599538 sd biological 5.000000 5 2.3534292 NA 2.484 biological Not specified ng/g Not provided 0.093 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 0.5599538 2.484 4.2857143
F006 Hu_2020 2020 China E184 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 16.48 PFHxS 6 Yes Boiling water-based NA 100 120 Yes No NA 300.000 300.000 4.2857143 70.0000 C027 Shared control NA 5.000000 5 ng/g 1.8092949 NA 2.3827419 sd biological 5.000000 5 0.6506410 NA 0.108 biological Not specified ng/g Not provided 0.155 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 2.3827419 0.108 4.2857143
F006 Hu_2020 2020 China E185 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 16.48 FOSA 8 Yes Boiling water-based NA 100 120 Yes No NA 300.000 300.000 4.2857143 70.0000 C027 Shared control NA 5.000000 5 ng/g 2.5990437 NA 1.6889253 sd biological 5.000000 5 2.2540984 NA 1.248 biological Not specified ng/g Not provided 0.026 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 1.6889253 1.248 4.2857143
F006 Hu_2020 2020 China E186 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 23.14 PFBA 3 No Frying oil-based In a stainless-steel pan 180 150 No Yes Not specified 100.000 100.000 1.4285714 70.0000 C028 Shared control NA 5.000000 5 ng/g 6.9619423 NA 7.4193907 sd biological 5.000000 5 7.9068241 NA 9.381 biological Not specified ng/g Not provided 12.2 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 7.4193907 9.381 1.4285714
F006 Hu_2020 2020 China E187 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 23.14 PFOA 8 Yes Frying oil-based In a stainless-steel pan 180 150 No Yes Not specified 100.000 100.000 1.4285714 70.0000 C028 Shared control NA 5.000000 5 ng/g 0.2098410 NA 0.1560332 sd biological 5.000000 5 0.2308114 NA 0.154 biological Not specified ng/g Not provided 0.226 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 0.1560332 0.154 1.4285714
F006 Hu_2020 2020 China E188 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 23.14 PFBS 4 Yes Frying oil-based In a stainless-steel pan 180 150 No Yes Not specified 100.000 100.000 1.4285714 70.0000 C028 Shared control NA 5.000000 5 ng/g 24.8753463 NA 23.9889753 sd biological 5.000000 5 9.8657220 NA 5.801 biological Not specified ng/g Not provided 1.01 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 23.9889753 5.801 1.4285714
F006 Hu_2020 2020 China E189 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 23.14 PFOS 8 Yes Frying oil-based In a stainless-steel pan 180 150 No Yes Not specified 100.000 100.000 1.4285714 70.0000 C028 Shared control NA 5.000000 5 ng/g 86.6890380 NA 39.4592027 sd biological 5.000000 5 134.4379195 NA 58.054 biological Not specified ng/g Not provided 1.57 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 39.4592027 58.054 1.4285714
F006 Hu_2020 2020 China E190 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 23.14 PFHpA 7 No Frying oil-based In a stainless-steel pan 180 150 No Yes Not specified 100.000 100.000 1.4285714 70.0000 C028 Shared control NA 5.000000 5 ng/g 24.2980562 NA 30.6129835 sd biological 5.000000 5 23.7041037 NA 35.93 biological Not specified ng/g Not provided 0.47 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 30.6129835 35.93 1.4285714
F006 Hu_2020 2020 China E191 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 23.14 PFDoDA 12 No Frying oil-based In a stainless-steel pan 180 150 No Yes Not specified 100.000 100.000 1.4285714 70.0000 C028 Shared control NA 5.000000 5 ng/g 1.5680310 NA 0.5599538 sd biological 5.000000 5 2.8733407 NA 2.747 biological Not specified ng/g Not provided 0.093 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 0.5599538 2.747 1.4285714
F006 Hu_2020 2020 China E192 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 23.14 PFHxS 6 Yes Frying oil-based In a stainless-steel pan 180 150 No Yes Not specified 100.000 100.000 1.4285714 70.0000 C028 Shared control NA 5.000000 5 ng/g 1.8092949 NA 2.3827419 sd biological 5.000000 5 1.1602564 NA 0.738 biological Not specified ng/g Not provided 0.155 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 2.3827419 0.738 1.4285714
F006 Hu_2020 2020 China E193 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 23.14 FOSA 8 Yes Frying oil-based In a stainless-steel pan 180 150 No Yes Not specified 100.000 100.000 1.4285714 70.0000 C028 Shared control NA 5.000000 5 ng/g 2.5990437 NA 1.6889253 sd biological 5.000000 5 3.7500000 NA 3.741 biological Not specified ng/g Not provided 0.026 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 1.6889253 3.741 1.4285714
F006 Hu_2020 2020 China E194 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 21.31 PFBA 3 No Grilling oil-based Domestic electric oven set to broil 210 600 No Yes Not specified 10.000 10.000 0.1428571 70.0000 C029 Shared control NA 5.000000 5 ng/g 6.9619423 NA 7.4193907 sd biological 5.000000 5 4.8490814 NA 6.93 biological Not specified ng/g Not provided 12.2 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 7.4193907 6.93 0.1428571
F006 Hu_2020 2020 China E195 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 21.31 PFOA 8 Yes Grilling oil-based Domestic electric oven set to broil 210 600 No Yes Not specified 10.000 10.000 0.1428571 70.0000 C029 Shared control NA 5.000000 5 ng/g 0.2098410 NA 0.1560332 sd biological 5.000000 5 0.1652961 NA 0.063 biological Not specified ng/g Not provided 0.226 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 0.1560332 0.063 0.1428571
F006 Hu_2020 2020 China E196 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 21.31 PFBS 4 Yes Grilling oil-based Domestic electric oven set to broil 210 600 No Yes Not specified 10.000 10.000 0.1428571 70.0000 C029 Shared control NA 5.000000 5 ng/g 24.8753463 NA 23.9889753 sd biological 5.000000 5 7.5376305 NA 1.502 biological Not specified ng/g Not provided 1.01 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 23.9889753 1.502 0.1428571
F006 Hu_2020 2020 China E197 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 21.31 PFOS 8 Yes Grilling oil-based Domestic electric oven set to broil 210 600 No Yes Not specified 10.000 10.000 0.1428571 70.0000 C029 Shared control NA 5.000000 5 ng/g 86.6890380 NA 39.4592027 sd biological 5.000000 5 121.7142058 NA 62.557 biological Not specified ng/g Not provided 1.57 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 39.4592027 62.557 0.1428571
F006 Hu_2020 2020 China E198 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 21.31 PFHpA 7 No Grilling oil-based Domestic electric oven set to broil 210 600 No Yes Not specified 10.000 10.000 0.1428571 70.0000 C029 Shared control NA 5.000000 5 ng/g 24.2980562 NA 30.6129835 sd biological 5.000000 5 10.0971922 NA 16.49 biological Not specified ng/g Not provided 0.47 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 30.6129835 16.49 0.1428571
F006 Hu_2020 2020 China E199 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 21.31 PFDoDA 12 No Grilling oil-based Domestic electric oven set to broil 210 600 No Yes Not specified 10.000 10.000 0.1428571 70.0000 C029 Shared control NA 5.000000 5 ng/g 1.5680310 NA 0.5599538 sd biological 5.000000 5 2.9120575 NA 3.36 biological Not specified ng/g Not provided 0.093 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 0.5599538 3.36 0.1428571
F006 Hu_2020 2020 China E200 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 21.31 PFHxS 6 Yes Grilling oil-based Domestic electric oven set to broil 210 600 No Yes Not specified 10.000 10.000 0.1428571 70.0000 C029 Shared control NA 5.000000 5 ng/g 1.8092949 NA 2.3827419 sd biological 5.000000 5 0.8253205 NA 0.254 biological Not specified ng/g Not provided 0.155 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 2.3827419 0.254 0.1428571
F006 Hu_2020 2020 China E201 Grass carp Ctenopharyngodon idell vertebrate freshwater fish 21.31 FOSA 8 Yes Grilling oil-based Domestic electric oven set to broil 210 600 No Yes Not specified 10.000 10.000 0.1428571 70.0000 C029 Shared control NA 5.000000 5 ng/g 2.5990437 NA 1.6889253 sd biological 5.000000 5 2.2814208 NA 0.43 biological Not specified ng/g Not provided 0.026 Dependent Figure 3 No We used meta-digitize to get effect sizes, and used boxplot-option to calculate sd, also we assumed that individual fish were not pooled, but each fish was measured individually, we also assumed that the sd provided was biological. 1.6889253 0.43 0.1428571
F007 Kim_2020 2020 Korea E202 Mackerel Scomber japonicus vertebrate marine fish NA PFOA 8 Yes Grilling oil-based NA NA 360 No Yes Not specified 5.000 5.000 0.0500000 100.0000 C030 Shared control NA 10.000000 1 ng/g 0.0700000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. For volume of cooking liquid: 1 cup is 250 ml, accordingly for table spoon etc. ML NA NA 0.0500000
F007 Kim_2020 2020 Korea E203 Mackerel Scomber japonicus vertebrate marine fish NA PFOA 8 Yes Braising water-based NA 100 1500 Yes No NA 250.000 250.000 2.5000000 100.0000 C031 Shared control NA 10.000000 1 ng/g 0.0700000 NA 0.0100000 sd technical 10.000000 1 0.1100000 NA 0 technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E204 Mackerel Scomber japonicus vertebrate marine fish NA PFOA 8 Yes Steaming water-based NA 100 900 Yes No NA 250.000 250.000 2.5000000 100.0000 C032 Shared control NA 10.000000 1 ng/g 0.0700000 NA 0.0100000 sd technical 10.000000 1 0.0200000 NA NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E205 Mackerel Scomber japonicus vertebrate marine fish NA PFOA 8 Yes Frying oil-based NA 160 300 No Yes Not specified 750.000 750.000 7.5000000 100.0000 C033 Shared control NA 10.000000 1 ng/g 0.0700000 NA 0.0100000 sd technical 10.000000 1 0.0900000 NA 0.06 technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 7.5000000
F007 Kim_2020 2020 Korea E206 Mackerel Scomber japonicus vertebrate marine fish NA PFBA 3 No Grilling oil-based NA NA 360 No Yes Not specified 5.000 5.000 0.0500000 100.0000 C030 Shared control NA 10.000000 1 ng/g 0.1600000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 0.0500000
F007 Kim_2020 2020 Korea E207 Mackerel Scomber japonicus vertebrate marine fish NA PFBA 3 No Braising water-based NA 100 1500 Yes No NA 250.000 250.000 2.5000000 100.0000 C031 Shared control NA 10.000000 1 ng/g 0.1600000 NA 0.0100000 sd technical 10.000000 1 0.1300000 NA 0.04 technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E208 Mackerel Scomber japonicus vertebrate marine fish NA PFBA 3 No Steaming water-based NA 100 900 Yes No NA 250.000 250.000 2.5000000 100.0000 C032 Shared control NA 10.000000 1 ng/g 0.1600000 NA 0.0100000 sd technical 10.000000 1 0.1400000 NA 0.01 technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E209 Mackerel Scomber japonicus vertebrate marine fish NA PFBA 3 No Frying oil-based NA 160 300 No Yes Not specified 750.000 750.000 7.5000000 100.0000 C033 Shared control NA 10.000000 1 ng/g 0.1600000 NA 0.0100000 sd technical 10.000000 1 0.0900000 NA 0 technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 7.5000000
F007 Kim_2020 2020 Korea E210 Mackerel Scomber japonicus vertebrate marine fish NA PFHpA 7 No Grilling oil-based NA NA 360 No Yes Not specified 5.000 5.000 0.0500000 100.0000 C030 Shared control NA 10.000000 1 ng/g 0.0700000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 0.0500000
F007 Kim_2020 2020 Korea E211 Mackerel Scomber japonicus vertebrate marine fish NA PFHpA 7 No Braising water-based NA 100 1500 Yes No NA 250.000 250.000 2.5000000 100.0000 C031 Shared control NA 10.000000 1 ng/g 0.0700000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E212 Mackerel Scomber japonicus vertebrate marine fish NA PFHpA 7 No Steaming water-based NA 100 900 Yes No NA 250.000 250.000 2.5000000 100.0000 C032 Shared control NA 10.000000 1 ng/g 0.0700000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E213 Mackerel Scomber japonicus vertebrate marine fish NA PFHpA 7 No Frying oil-based NA 160 300 No Yes Not specified 750.000 750.000 7.5000000 100.0000 C033 Shared control NA 10.000000 1 ng/g 0.0700000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 7.5000000
F007 Kim_2020 2020 Korea E214 Mackerel Scomber japonicus vertebrate marine fish NA PFDoDA 12 No Grilling oil-based NA NA 360 No Yes Not specified 5.000 5.000 0.0500000 100.0000 C030 Shared control NA 10.000000 1 ng/g 0.0200000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 0.0500000
F007 Kim_2020 2020 Korea E215 Mackerel Scomber japonicus vertebrate marine fish NA PFDoDA 12 No Braising water-based NA 100 1500 Yes No NA 250.000 250.000 2.5000000 100.0000 C031 Shared control NA 10.000000 1 ng/g 0.0200000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E216 Mackerel Scomber japonicus vertebrate marine fish NA PFDoDA 12 No Steaming water-based NA 100 900 Yes No NA 250.000 250.000 2.5000000 100.0000 C032 Shared control NA 10.000000 1 ng/g 0.0200000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E217 Mackerel Scomber japonicus vertebrate marine fish NA PFDoDA 12 No Frying oil-based NA 160 300 No Yes Not specified 750.000 750.000 7.5000000 100.0000 C033 Shared control NA 10.000000 1 ng/g 0.0200000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 7.5000000
F007 Kim_2020 2020 Korea E218 Mackerel Scomber japonicus vertebrate marine fish NA PFTrA 13 No Grilling oil-based NA NA 360 No Yes Not specified 5.000 5.000 0.0500000 100.0000 C030 Shared control NA 10.000000 1 ng/g 0.0800000 NA 0.0100000 sd technical 10.000000 1 0.0500000 NA 0 technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 0.0500000
F007 Kim_2020 2020 Korea E219 Mackerel Scomber japonicus vertebrate marine fish NA PFTrA 13 No Braising water-based NA 100 1500 Yes No NA 250.000 250.000 2.5000000 100.0000 C031 Shared control NA 10.000000 1 ng/g 0.0800000 NA 0.0100000 sd technical 10.000000 1 0.0600000 NA 0.02 technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E220 Mackerel Scomber japonicus vertebrate marine fish NA PFTrA 13 No Steaming water-based NA 100 900 Yes No NA 250.000 250.000 2.5000000 100.0000 C032 Shared control NA 10.000000 1 ng/g 0.0800000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E221 Mackerel Scomber japonicus vertebrate marine fish NA PFTrA 13 No Frying oil-based NA 160 300 No Yes Not specified 750.000 750.000 7.5000000 100.0000 C033 Shared control NA 10.000000 1 ng/g 0.0800000 NA 0.0100000 sd technical 10.000000 1 0.0600000 NA 0 technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 7.5000000
F007 Kim_2020 2020 Korea E222 Mackerel Scomber japonicus vertebrate marine fish NA PFBS 4 Yes Grilling oil-based NA NA 360 No Yes Not specified 5.000 5.000 0.0500000 100.0000 C030 Shared control NA 10.000000 1 ng/g 0.1900000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 0.0500000
F007 Kim_2020 2020 Korea E223 Mackerel Scomber japonicus vertebrate marine fish NA PFBS 4 Yes Braising water-based NA 100 1500 Yes No NA 250.000 250.000 2.5000000 100.0000 C031 Shared control NA 10.000000 1 ng/g 0.1900000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E224 Mackerel Scomber japonicus vertebrate marine fish NA PFBS 4 Yes Steaming water-based NA 100 900 Yes No NA 250.000 250.000 2.5000000 100.0000 C032 Shared control NA 10.000000 1 ng/g 0.1900000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 2.5000000
F007 Kim_2020 2020 Korea E225 Mackerel Scomber japonicus vertebrate marine fish NA PFBS 4 Yes Frying oil-based NA 160 300 No Yes Not specified 750.000 750.000 7.5000000 100.0000 C033 Shared control NA 10.000000 1 ng/g 0.1900000 NA 0.0100000 sd technical 10.000000 1 0.0200000 LOD NA technical Not specified ng/g 0.02 to 0.09 0.08 to 0.27 Dependent Table 2 No We assumed the lowest value (0.02) for LOD. Weight of fish sample per batch: We follow the cooking instructions of table 1. We assume one piece of fish was used per batched. NA NA 7.5000000
F008 Luo_2019 2019 Korea E316 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFOA 8 Yes Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 20.7900000 NA 0.1700000 sd technical 5.000000 1 16.7700000 NA 0.42 technical ng/g 0.06 0.19 Dependent Table 4 No Scientific name of swimming crab not provided in paper, inferred as this species of swimming crab is commonly eaten in South korea (Kim, S., Lee, M.J., Lee, J.J., Choi, S.H. and Kim, B.S., 2017. Analysis of microbiota of the swimming crab (Portunus trituberculatus) in South Korea to identify risk markers for foodborne illness. LWT, 86, pp.483-491.) NA NA 2.5000000
F008 Luo_2019 2019 Korea E317 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFOS 8 Yes Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 0.8100000 NA 0.0200000 sd technical 5.000000 1 0.7400000 NA 0.03 technical ng/g 0.07 0.07 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E318 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFBA 3 No Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 0.1400000 NA 0.0100000 sd technical 5.000000 1 0.0400000 NA 0.01 technical ng/g 0.06 0.19 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E319 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFHpA 7 No Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 0.3700000 NA 0.0300000 sd technical 5.000000 1 0.3200000 NA 0.01 technical ng/g 0.06 0.17 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E320 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFNA 9 Yes Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 2.8900000 NA 0.0200000 sd technical 5.000000 1 2.3000000 NA 0.03 technical ng/g 0.03 0.08 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E321 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFDA 10 Yes Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 0.6600000 NA 0.0200000 sd technical 5.000000 1 0.5700000 NA 0.02 technical ng/g 0.04 0.11 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E322 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFUnDA 11 Yes Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 0.9300000 NA 0.0100000 sd technical 5.000000 1 0.7900000 NA 0.02 technical ng/g 0.08 0.25 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E323 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFDoDA 12 No Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 0.2500000 NA 0.0200000 sd technical 5.000000 1 0.2300000 NA 0.01 technical ng/g 0.06 0.19 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E324 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFTrA 13 No Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 1.1200000 NA 0.0600000 sd technical 5.000000 1 1.3800000 NA 0.09 technical ng/g 0.05 0.16 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E325 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFTA 14 No Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 0.2800000 NA 0.0100000 sd technical 5.000000 1 0.2600000 NA 0.02 technical ng/g 0.05 0.15 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E326 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFHxS 6 Yes Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 0.4800000 NA 0.0300000 sd technical 5.000000 1 0.3300000 NA 0.03 technical ng/g 0.08 0.25 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E327 Swimming crab Portunus trituberculatus invertebrate crustacea NA PFDS 10 No Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 0.0400000 NA 0.0100000 sd technical 5.000000 1 0.0400000 NA 0.01 technical ng/g 0.09 0.27 Dependent Table 4 No NA NA 2.5000000
F008 Luo_2019 2019 Korea E328 Swimming crab Portunus trituberculatus invertebrate crustacea NA FOSA 8 Yes Boiling water-based Boiled with radish 100 600 Yes No NA 2500.000 2500.000 2.5000000 1000.0000 C040 Shared control NA 5.000000 1 ng/g 1.5400000 NA 0.0900000 sd technical 5.000000 1 2.5500000 NA 0.19 technical ng/g 0.04 0.11 Dependent Table 4 No NA NA 2.5000000
F010 Sungur_2019 2019 Turkey E329 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C041 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.1590000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied ML - note shared controls for differend cooking times and methods NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E330 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C042 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.1170000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E331 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C043 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.0790000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E332 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C044 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.1420000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E333 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C045 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.1160000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E334 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C046 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.0980000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E335 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C047 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.1400000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E336 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C048 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.1330000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E337 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C049 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.0710000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E338 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C050 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.2010000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E339 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C051 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.0590000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E340 Bluefish Pomatomus saltator vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C052 Shared control NA 10.000000 1 ng/g 0.2320000 NA 0.0010000 sd technical 10.000000 1 0.0480000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E341 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C041 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 14.7000000 NA 0.009 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E342 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C042 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 9.3500000 NA 0.008 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E343 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C043 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 3.6600000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E344 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C044 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 5.6300000 NA 0.005 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E345 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C045 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 4.5000000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E346 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C046 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 3.7700000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E347 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C047 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 8.2800000 NA 0.007 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E348 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C048 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 6.6200000 NA 0.006 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E349 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C049 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 3.4800000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E350 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C050 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 4.4900000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E351 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C051 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 3.0500000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E352 Bluefish Pomatomus saltator vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C052 Shared control NA 10.000000 1 ng/g 24.0000000 NA 0.0110000 sd technical 10.000000 1 2.8300000 NA 0.003 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E353 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C053 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.1960000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E354 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C054 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.1180000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E355 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C055 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.0840000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E356 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C056 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.2030000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E357 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C057 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.1390000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E358 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C058 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.1040000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E359 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C059 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.2070000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E360 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C060 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.0970000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E361 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C061 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.0820000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E362 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C062 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.1960000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E363 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C063 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.0510000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E364 Red mullet Mullus barbatus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C064 Shared control NA 10.000000 1 ng/g 0.2140000 NA 0.0010000 sd technical 10.000000 1 0.2550000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E365 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C053 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 4.7800000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E366 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C054 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 3.5000000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E367 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C055 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 1.5100000 NA 0.002 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E368 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C056 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 7.0500000 NA 0.006 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E369 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C057 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 2.4700000 NA 0.003 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E370 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C058 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 1.7600000 NA 0.002 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E371 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C059 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 3.0300000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E372 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C060 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 2.0400000 NA 0.003 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E373 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C061 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 1.2300000 NA 0.002 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E374 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C062 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 4.2800000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E375 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C063 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 2.7800000 NA 0.003 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E376 Red mullet Mullus barbatus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C064 Shared control NA 10.000000 1 ng/g 8.9200000 NA 0.0070000 sd technical 10.000000 1 1.0200000 NA 0.002 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E377 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C065 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.2420000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E378 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C066 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.1870000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E379 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C067 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.0960000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E380 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C068 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.1750000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E381 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C069 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.1530000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E382 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C070 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.0980000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E383 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C071 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.1890000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E384 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C072 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.1320000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E385 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C073 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.0930000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E386 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C074 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.1810000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E387 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C075 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.0880000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E388 Whitefish Salmo trutta vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C076 Shared control NA 10.000000 1 ng/g 0.2550000 NA 0.0010000 sd technical 10.000000 1 0.0660000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E389 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C065 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 4.1500000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E390 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C066 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 2.6500000 NA 0.003 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E391 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C067 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 1.2300000 NA 0.002 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E392 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C068 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 4.4400000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E393 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C069 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 2.3600000 NA 0.003 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E394 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C070 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 1.6500000 NA 0.002 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E395 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C071 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 3.6800000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E396 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C072 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 1.7300000 NA 0.002 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E397 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C073 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 0.9200000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E398 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C074 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 4.0300000 NA 0.004 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E399 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C075 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 1.9700000 NA 0.002 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E400 Whitefish Salmo trutta vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C076 Shared control NA 10.000000 1 ng/g 5.0700000 NA 0.0040000 sd technical 10.000000 1 0.8400000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E401 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C077 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.2020000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E402 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C078 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.1280000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E403 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C079 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.0920000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E404 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C080 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.1580000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E405 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C081 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.1210000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E406 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C082 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.0980000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E407 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C083 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.1680000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E408 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C084 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.1340000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E409 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C085 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.0910000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E410 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C086 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.1740000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E411 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C087 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.0960000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E412 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C088 Shared control NA 10.000000 1 ng/g 0.2380000 NA 0.0010000 sd technical 10.000000 1 0.0440000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E413 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C077 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.2760000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E414 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C078 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.1750000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E415 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C079 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.0900000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E416 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C080 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.3110000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E417 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C081 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.2840000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E418 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C082 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.0940000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E419 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C083 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.2970000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E420 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C084 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.1610000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E421 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C085 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.0850000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E422 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C086 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.1640000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E423 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C087 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.0930000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E424 Common pandora Pagellus erythrinus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C088 Shared control NA 10.000000 1 ng/g 0.4070000 NA 0.0010000 sd technical 10.000000 1 0.0670000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E425 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C089 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.1970000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E426 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C090 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.1460000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E427 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C091 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.0900000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E428 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C092 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.2120000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E429 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C093 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.1220000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E430 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C094 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.0940000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E431 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C095 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.1470000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E432 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C096 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.1280000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E433 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C097 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.0690000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E434 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C098 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.1450000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E435 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C099 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.1020000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E436 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C100 Shared control NA 10.000000 1 ng/g 0.2980000 NA 0.0010000 sd technical 10.000000 1 0.0420000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E437 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C089 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.3720000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E438 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C090 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.2510000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E439 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C091 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.0940000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E440 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C092 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.2540000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E441 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C093 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.1800000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E442 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C094 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.0970000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E443 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C095 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.3260000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E444 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C096 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.1550000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E445 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C097 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.0630000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E446 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C098 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.3580000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E447 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C099 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.1970000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E448 Flathead grey mullet Mugil cephalus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C100 Shared control NA 10.000000 1 ng/g 0.4180000 NA 0.0010000 sd technical 10.000000 1 0.0560000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E449 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C101 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.1470000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E450 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C102 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.1150000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E451 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C103 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.0500000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E452 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C104 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.1480000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E453 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C105 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.1070000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E454 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Baking oil-based NA 160 1200 No No NA 300.000 300.000 30.0000000 10.0000 C106 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.0570000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E455 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C107 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.1210000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E456 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C108 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.0950000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E457 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C109 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.0430000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E458 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C110 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.1150000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E459 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C111 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.0820000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E460 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C112 Shared control NA 10.000000 1 ng/g 0.1530000 NA 0.0010000 sd technical 10.000000 1 0.0330000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E461 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C101 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.6640000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E462 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C102 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.3120000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E463 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C103 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.0990000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E464 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C104 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.6180000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E465 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C105 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.3780000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E466 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C106 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.1070000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E467 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C107 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.5980000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E468 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C108 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.4020000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E469 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C109 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.0970000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E470 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C110 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.6180000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E471 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C111 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.2460000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E472 Atlantic mackerel Scomber scombrus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C112 Shared control NA 10.000000 1 ng/g 0.7860000 NA 0.0010000 sd technical 10.000000 1 0.0890000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E473 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C113 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0980000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E474 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C114 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0620000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E475 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C115 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0430000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E476 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C116 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0800000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E477 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C117 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0600000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E478 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C118 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0450000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E479 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C119 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0980000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E480 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C120 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0700000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E481 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C121 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0340000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E482 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C122 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0650000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E483 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C123 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0580000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E484 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C124 Shared control NA 10.000000 1 ng/g 0.1080000 NA 0.0010000 sd technical 10.000000 1 0.0320000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E485 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C113 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.1540000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E486 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C114 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.1080000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E487 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C115 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.0920000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E488 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C116 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.1470000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E489 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C117 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.1020000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E490 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C118 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.0940000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E491 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C119 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.1260000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E492 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C120 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.0990000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E493 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C121 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.0520000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E494 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C122 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.1020000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E495 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C123 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.0760000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E496 Pike-perch Dicentrarchus labrax vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C124 Shared control NA 10.000000 1 ng/g 0.2740000 NA 0.0010000 sd technical 10.000000 1 0.0490000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E497 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C125 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.1450000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E498 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C126 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.1130000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E499 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C127 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.0540000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E500 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C128 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.1520000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E501 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C129 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.1280000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E502 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C130 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.0610000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E503 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C131 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.1220000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E504 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C132 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.0920000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E505 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C133 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.0490000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E506 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C134 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.1180000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E507 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C135 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.0890000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E508 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOA 8 NA Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C136 Shared control NA 10.000000 1 ng/g 0.1810000 NA 0.0010000 sd technical 10.000000 1 0.0440000 NA 0.001 technical 3 ng/g 0.009 0.03 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E509 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 600 Yes No NA 300.000 300.000 30.0000000 10.0000 C125 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.3570000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E510 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 900 Yes No NA 300.000 300.000 30.0000000 10.0000 C126 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.2100000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E511 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Boiling water-based NA 100 1200 Yes No NA 300.000 300.000 30.0000000 10.0000 C127 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.0920000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E512 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 600 No No NA NA 0.000 NA NA C128 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.2560000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E513 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 900 No No NA NA 0.000 NA NA C129 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.1840000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E514 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Baking No liquid NA 160 1200 No No NA NA 0.000 NA NA C130 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.0990000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 0.0000000
F010 Sungur_2019 2019 Turkey E515 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 600 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C131 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.3440000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E516 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 900 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C132 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.1480000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E517 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in olive oil 160 1200 No Yes olive oil 300.000 300.000 30.0000000 10.0000 C133 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.0820000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E518 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 600 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C134 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.3410000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E519 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 900 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C135 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.1920000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F010 Sungur_2019 2019 Turkey E520 Mediterranean sand smelt Atherina hepsetus vertebrate marine fish NA PFOS 8 linear Yes Frying oil-based in sunflower oil 160 1200 No Yes sunflower oil 300.000 300.000 30.0000000 10.0000 C136 Shared control NA 10.000000 1 ng/g 0.4760000 NA 0.0010000 sd technical 10.000000 1 0.0540000 NA 0.001 technical 3 ng/g 0.006 0.02 Dependent Table 3 No Authors replied NA NA 30.0000000
F011 Taylor_2019 2019 Australia E521 Dusky flathead Platycephalus fuscus vertebrate marine fish 21.47 PFHxS 6 linear Yes Baking oil-based NA 75 600 No Yes olive oil 20.000 20.000 0.3976934 50.2900 C137 Shared control Contaminated site 4.000000 4 ng/g 0.9673000 NA 1.0026000 sd biological 4.000000 4 1.4750000 NA 1.743 biological 1 ng/g 0.023508736 0.078362453 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied ML - check empty fields, why SE/SD field is NA? 1.0026000 1.743 0.3976934
F011 Taylor_2019 2019 Australia E522 Dusky flathead Platycephalus fuscus vertebrate marine fish 21.47 PFOS 8 linear Yes Baking oil-based NA 75 600 No Yes olive oil 20.000 20.000 0.3976934 50.2900 C137 Shared control Contaminated site 6.000000 6 ng/g 75.6360000 NA 133.7000000 sd biological 6.000000 6 84.5500000 NA 130.5 biological 1 ng/g 0.023185477 0.077284922 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 133.7000000 130.5 0.3976934
F011 Taylor_2019 2019 Australia E523 Dusky flathead Platycephalus fuscus vertebrate marine fish 21.47 PFOS 8 linear Yes Baking oil-based NA 75 600 No Yes olive oil 20.000 20.000 0.4610420 43.3800 C138 Shared control Clean site 3.000000 3 ng/g 0.0894000 NA 0.0339000 sd biological 3.000000 3 0.1210000 NA 0.039 biological 1 ng/g 0.023185477 0.077284922 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.0339000 0.039 0.4610420
F011 Taylor_2019 2019 Australia E526 Dusky flathead Platycephalus fuscus vertebrate marine fish 21.47 PFDS 10 linear Yes Baking oil-based NA 75 600 No Yes olive oil 20.000 20.000 0.3976934 50.2900 C137 Shared control Contaminated site 2.000000 2 ng/g 0.1391000 NA 0.0247000 sd biological 2.000000 2 0.3760000 NA 0.024 biological 1 ng/g 0.030122517 0.10040839 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.0247000 0.024 0.3976934
F011 Taylor_2019 2019 Australia E527 Dusky flathead Platycephalus fuscus vertebrate marine fish 21.47 FOSA 8 NA Yes Baking oil-based NA 75 600 No Yes olive oil 20.000 20.000 0.3976934 50.2900 C137 Shared control Contaminated site 2.000000 2 ng/g 0.0749000 <LOQ NA Not available bacause Mc/Me is below LOD/LOQ NA 2.000000 2 0.1990000 NA 0.012 biological 1 ng/g 0.034582913 0.115276378 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied NA 0.012 0.3976934
F011 Taylor_2019 2019 Australia E528 Dusky flathead Platycephalus fuscus vertebrate marine fish 18.64 PFHxS 6 linear Yes Frying oil-based NA 82 120 No Yes olive oil 40.000 40.000 0.7696748 51.9700 C140 Shared control Contaminated site 5.000000 5 ng/g 0.7841000 NA 0.9602000 sd biological 5.000000 5 0.8410000 NA 1.042 biological 1 ng/g 0.023508736 0.078362453 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.9602000 1.042 0.7696748
F011 Taylor_2019 2019 Australia E529 Dusky flathead Platycephalus fuscus vertebrate marine fish 18.64 PFOS 8 linear Yes Frying oil-based NA 82 120 No Yes olive oil 40.000 40.000 0.7696748 51.9700 C139 Shared control Contaminated site 6.000000 6 ng/g 75.6360000 NA 133.7000000 sd biological 6.000000 6 70.8430000 NA 106 biological 1 ng/g 0.023185477 0.077284922 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 133.7000000 106 0.7696748
F011 Taylor_2019 2019 Australia E530 Dusky flathead Platycephalus fuscus vertebrate marine fish 18.64 PFOS 8 linear Yes Frying oil-based NA 82 120 No Yes olive oil 40.000 40.000 0.9220839 43.3800 C140 Shared control Clean site 2.000000 2 ng/g 0.1090000 NA 0.0014000 sd biological 2.000000 2 0.2010000 NA 0.073 biological 1 ng/g 0.023185477 0.077284922 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.0014000 0.073 0.9220839
F011 Taylor_2019 2019 Australia E533 Dusky flathead Platycephalus fuscus vertebrate marine fish 18.64 FOSA 8 NA Yes Frying oil-based NA 82 120 No Yes olive oil 40.000 40.000 0.7696748 51.9700 C139 Shared control Contaminated site 4.000000 4 ng/g 0.1070000 NA 0.0397000 sd biological 4.000000 4 0.2540000 NA 0.132 biological 1 ng/g 0.034582913 0.115276378 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.0397000 0.132 0.7696748
F011 Taylor_2019 2019 Australia E534 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFHxA 6 linear No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 45.3309157 11.0300 C141 NA Contaminated site 3.000000 3 ng/g 0.1513000 NA 0.0306000 sd biological 3.000000 3 0.0730000 NA 0.021 biological 1 ng/g 0.028099467 0.093664888 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.0306000 0.021 45.3309157
F011 Taylor_2019 2019 Australia E535 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFHpA 7 NA No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 45.3309157 11.0300 C141 NA Contaminated site 6.000000 6 ng/g 0.2070000 NA 0.1445000 sd biological 6.000000 6 0.1090000 NA 0.052 biological 1 ng/g 0.01867491 0.0622497 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.1445000 0.052 45.3309157
F011 Taylor_2019 2019 Australia E536 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFOA 8 NA No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 45.3309157 11.0300 C141 NA Contaminated site 6.000000 6 ng/g 0.4279000 NA 0.2601000 sd biological 6.000000 6 0.2320000 NA 0.107 biological 1 ng/g 0.014519809 0.048399364 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.2601000 0.107 45.3309157
F011 Taylor_2019 2019 Australia E537 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFOA 8 NA No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 40.4858300 12.3500 C142 NA Clean site 4.000000 4 ng/g 0.0433000 NA 0.0137000 sd biological 4.000000 4 0.0710000 NA 0.066 biological 1 ng/g 0.014519809 0.048399364 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.0137000 0.066 40.4858300
F011 Taylor_2019 2019 Australia E538 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFUnDA 11 NA No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 45.3309157 11.0300 C141 NA Contaminated site 4.000000 4 ng/g 0.1128000 NA 0.0093000 sd biological 4.000000 4 0.0580000 <LOQ NA NA 1 ng/g 0.026755217 0.089184057 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.0093000 NA 45.3309157
F011 Taylor_2019 2019 Australia E539 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFUnDA 11 NA No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 40.4858300 12.3500 C142 NA Clean site 1.000000 1 ng/g 0.1047000 NA NA sd biological 1.000000 1 0.0580000 <LOQ NA NA 1 ng/g 0.026755217 0.089184057 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied NA NA 40.4858300
F011 Taylor_2019 2019 Australia E540 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFDoDA 12 NA No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 45.3309157 11.0300 C141 NA Contaminated site 1.000000 1 ng/g 0.0802000 <LOQ NA Not available bacause Mc/Me is below LOD/LOQ NA 1.000000 1 0.1280000 No sd, as N = 1 NA NA 1 ng/g 0.037026547 0.123421824 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied NA NA 45.3309157
F011 Taylor_2019 2019 Australia E541 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFDoDA 12 NA No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 40.4858300 12.3500 C142 NA Clean site 1.000000 1 ng/g 0.1230000 NA NA sd biological 1.000000 1 0.0800000 <LOQ NA NA 1 ng/g 0.037026547 0.123421824 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied NA NA 40.4858300
F011 Taylor_2019 2019 Australia E542 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFHxS 6 linear No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 45.3309157 11.0300 C141 NA Contaminated site 6.000000 6 ng/g 0.5991000 NA 0.2053000 sd biological 6.000000 6 0.3870000 NA 0.079 biological 1 ng/g 0.023508736 0.078362453 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.2053000 0.079 45.3309157
F011 Taylor_2019 2019 Australia E543 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFHxS 6 linear No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 40.4858300 12.3500 C142 NA Clean site 1.000000 1 ng/g 0.1230000 <LOQ NA Not available bacause Mc/Me is below LOD/LOQ NA 1.000000 1 0.0810000 No sd, as N = 1 NA NA 1 ng/g 0.023508736 0.078362453 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied NA NA 40.4858300
F011 Taylor_2019 2019 Australia E544 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFOS 8 linear No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 45.3309157 11.0300 C141 NA Contaminated site 6.000000 6 ng/g 5.0500000 NA 0.4637000 sd biological 6.000000 6 5.5330000 NA 0.829 biological 1 ng/g 0.023185477 0.077284922 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.4637000 0.829 45.3309157
F011 Taylor_2019 2019 Australia E545 Blue swimmer crab Portunus armatus invertebrate crustacea NA PFOS 8 linear No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 40.4858300 12.3500 C142 NA Clean site 6.000000 6 ng/g 0.1917000 NA 0.2129000 sd biological 6.000000 6 0.1920000 NA 0.236 biological 1 ng/g 0.023185477 0.077284922 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.2129000 0.236 40.4858300
F011 Taylor_2019 2019 Australia E548 Blue swimmer crab Portunus armatus invertebrate crustacea NA FOSA 8 NA No Boiling water-based in saltwater (8.5 g/L) 100 420 Yes No NA 500.000 500.000 45.3309157 11.0300 C141 NA Contaminated site 6.000000 6 ng/g 0.3112000 NA 0.1413000 sd biological 6.000000 6 0.3220000 NA 0.099 biological 1 ng/g 0.034582913 0.115276378 Dependent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied 0.1413000 0.099 45.3309157
F011 Taylor_2019 2019 Australia E549 School prawn Metapenaeus macleayi invertebrate crustacea NA PFHpA 7 NA Yes Boiling water-based in saltwater (8.5 g/L) 100 240 Yes No NA 500.000 500.000 7.7375426 64.6200 C143 NA Contaminated site 10.000000 1 ng/g 0.0802000 <LOQ NA Not available bacause Mc/Me is below LOD/LOQ NA 10.000000 1 0.1280000 NA NA biological 1 ng/g 0.01867491 0.0622497 Independent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied, shrimp sample sizes in paper at 10 per group, we used sample sizes as reported in the main text (conservative sample sizes), although the actual PFAS concentrations were from the raw data provided by the author. NA NA 7.7375426
F011 Taylor_2019 2019 Australia E550 School prawn Metapenaeus macleayi invertebrate crustacea NA PFOA 8 NA Yes Boiling water-based in saltwater (8.5 g/L) 100 240 Yes No NA 500.000 500.000 7.7375426 64.6200 C143 NA Contaminated site 10.000000 1 ng/g 0.2229000 NA 0.0668000 sd biological 10.000000 1 0.4690000 NA 0.104 biological 1 ng/g 0.014519809 0.048399364 Independent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied, shrimp sample sizes in paper at 10 per group, we used sample sizes as reported in the main text (conservative sample sizes), although the actual PFAS concentrations were from the raw data provided by the author. 0.0668000 0.104 7.7375426
F011 Taylor_2019 2019 Australia E551 School prawn Metapenaeus macleayi invertebrate crustacea NA PFNA 9 NA Yes Boiling water-based in saltwater (8.5 g/L) 100 240 Yes No NA 500.000 500.000 7.7375426 64.6200 C143 NA Contaminated site 10.000000 1 ng/g 0.0910000 <LOQ NA Not available bacause Mc/Me is below LOD/LOQ NA 10.000000 1 0.2330000 NA 0.037 biological 1 ng/g 0.036013573 0.120045244 Independent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied, shrimp sample sizes in paper at 10 per group, we used sample sizes as reported in the main text (conservative sample sizes), although the actual PFAS concentrations were from the raw data provided by the author. NA 0.037 7.7375426
F011 Taylor_2019 2019 Australia E552 School prawn Metapenaeus macleayi invertebrate crustacea NA PFDA 10 NA Yes Boiling water-based in saltwater (8.5 g/L) 100 240 Yes No NA 500.000 500.000 7.7375426 64.6200 C143 NA Contaminated site 10.000000 1 ng/g 0.0854000 <LOQ NA Not available bacause Mc/Me is below LOD/LOQ NA 10.000000 1 0.1880000 NA 0.053 biological 1 ng/g 0.039417906 0.131393021 Independent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied, shrimp sample sizes in paper at 10 per group, we used sample sizes as reported in the main text (conservative sample sizes), although the actual PFAS concentrations were from the raw data provided by the author. NA 0.053 7.7375426
F011 Taylor_2019 2019 Australia E553 School prawn Metapenaeus macleayi invertebrate crustacea NA PFHxS 6 linear Yes Boiling water-based in saltwater (8.5 g/L) 100 240 Yes No NA 500.000 500.000 7.7375426 64.6200 C143 NA Contaminated site 10.000000 1 ng/g 2.3305000 NA 1.3905000 sd biological 10.000000 1 6.3160000 NA 1.628 biological 1 ng/g 0.023508736 0.078362453 Independent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied, shrimp sample sizes in paper at 10 per group, we used sample sizes as reported in the main text (conservative sample sizes), although the actual PFAS concentrations were from the raw data provided by the author. 1.3905000 1.628 7.7375426
F011 Taylor_2019 2019 Australia E554 School prawn Metapenaeus macleayi invertebrate crustacea NA PFOS 8 linear Yes Boiling water-based in saltwater (8.5 g/L) 100 240 Yes No NA 500.000 500.000 7.7375426 64.6200 C143 NA Contaminated site 10.000000 1 ng/g 7.4167000 NA 2.8414000 sd biological 10.000000 1 16.1670000 NA 3.869 biological 1 ng/g 0.023185477 0.077284922 Independent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied, shrimp sample sizes in paper at 10 per group, we used sample sizes as reported in the main text (conservative sample sizes), although the actual PFAS concentrations were from the raw data provided by the author. 2.8414000 3.869 7.7375426
F011 Taylor_2019 2019 Australia E555 School prawn Metapenaeus macleayi invertebrate crustacea NA PFOS 8 linear Yes Boiling water-based in saltwater (8.5 g/L) 100 240 Yes No NA 500.000 500.000 12.5376128 39.8800 C144 NA Clean site 10.000000 1 ng/g 0.0560000 NA 0.0133000 sd biological 10.000000 1 0.1180000 NA 0.029 biological 1 ng/g 0.023185477 0.077284922 Independent Taylor.et.al_2019_AdditionalInofrmation.from.Jenny_2.PFAS_Biota Yes Authors replied, shrimp sample sizes in paper at 10 per group, we used sample sizes as reported in the main text (conservative sample sizes), although the actual PFAS concentrations were from the raw data provided by the author. 0.0133000 0.029 12.5376128
F013 Vassiliadou_2015 2015 Greece E613 Anchovy Engraulis encrasicolus vertebrate marine fish 72.74 PFUnDA 11 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.9000000 333.3333 C145 Shared control NA 7.666667 1 ng/g 1.5000000 NA 0.0400000 sd technical 7.666667 1 1.7500000 NA 0.05 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. ML - why “Se_technical_biological” is coded as “sd”? “If_technical_how_many” needs a number. Shared control between differend cooking methods NA NA 0.9000000
F013 Vassiliadou_2015 2015 Greece E558 Anchovy Engraulis encrasicolus vertebrate marine fish 72.74 PFDoDA 12 NA No Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.9000000 333.3333 C145 Shared control NA 7.666667 1 ng/g 1.8600000 NA 0.1900000 sd technical 7.666667 1 2.9900000 NA 0.22 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.9000000
F013 Vassiliadou_2015 2015 Greece E559 Anchovy Engraulis encrasicolus vertebrate marine fish 72.74 PFOS 8 linear Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.9000000 333.3333 C145 Shared control NA 7.666667 1 ng/g 3.0600000 NA 0.1000000 sd technical 7.666667 1 6.6200000 NA 0.14 technical 1 ng/g 0.49 1.48 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.9000000
F013 Vassiliadou_2015 2015 Greece E560 Bogue Boops boops vertebrate marine fish 18.35 PFUnDA 11 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.3600000 833.3333 C146 Shared control NA 4.000000 1 ng/g 0.2400000 NA 0.0300000 sd technical 4.000000 1 0.4400000 NA 0.02 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.3600000
F013 Vassiliadou_2015 2015 Greece E561 Bogue Boops boops vertebrate marine fish 18.35 PFDoDA 12 NA No Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.3600000 833.3333 C146 Shared control NA 4.000000 1 ng/g 0.5600000 NA 0.0800000 sd technical 4.000000 1 1.1200000 NA 0.03 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.3600000
F013 Vassiliadou_2015 2015 Greece E562 Bogue Boops boops vertebrate marine fish 18.35 PFOS 8 linear Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.3600000 833.3333 C146 Shared control NA 4.000000 1 ng/g 0.8200000 NA 0.0400000 sd technical 4.000000 1 1.2700000 NA 0.06 technical 1 ng/g 0.49 1.48 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.3600000
F013 Vassiliadou_2015 2015 Greece E563 Hake Merluccius merluccius vertebrate marine fish 36.00 PFUnDA 11 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4300000 697.6744 C147 Shared control NA 6.666667 1 ng/g 0.4200000 NA 0.0500000 sd technical 6.666667 1 0.7000000 LOD NA technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4300000
F013 Vassiliadou_2015 2015 Greece E564 Hake Merluccius merluccius vertebrate marine fish 36.00 PFDoDA 12 NA No Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4300000 697.6744 C147 Shared control NA 6.666667 1 ng/g 0.6200000 NA 0.0800000 sd technical 6.666667 1 0.1000000 <LOD NA NA 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4300000
F013 Vassiliadou_2015 2015 Greece E565 Hake Merluccius merluccius vertebrate marine fish 36.00 PFBS 4 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4300000 697.6744 C147 Shared control NA 6.666667 1 ng/g 0.4500000 NA 0.0700000 sd technical 6.666667 1 0.8300000 NA 0.03 technical 1 ng/g 0.57 1.7 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4300000
F013 Vassiliadou_2015 2015 Greece E566 Hake Merluccius merluccius vertebrate marine fish 36.00 PFOS 8 linear Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4300000 697.6744 C147 Shared control NA 6.666667 1 ng/g 0.8400000 NA 0.1000000 sd technical 6.666667 1 1.2400000 NA 0.06 technical 1 ng/g 0.49 1.48 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4300000
F013 Vassiliadou_2015 2015 Greece E567 Picarel Spicara smaris vertebrate marine fish 44.04 PFUnDA 11 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4700000 638.2979 C148 Shared control NA 6.666667 1 ng/g 0.7000000 NA 0.0900000 sd technical 6.666667 1 1.3500000 NA 0.08 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4700000
F013 Vassiliadou_2015 2015 Greece E568 Picarel Spicara smaris vertebrate marine fish 44.04 PFOS 8 linear Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4700000 638.2979 C148 Shared control NA 6.666667 1 ng/g 20.3700000 NA 2.4700000 sd technical 6.666667 1 44.6900000 NA 3.93 technical 1 ng/g 0.49 1.48 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4700000
F013 Vassiliadou_2015 2015 Greece E569 Sand smelt Atherina boyeri vertebrate marine fish 79.11 PFUnDA 11 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.5200000 576.9231 C149 Shared control NA 13.000000 1 ng/g 0.3500000 <LOD NA Not available bacause Mc/Me is below LOD/LOQ NA 13.000000 1 0.7400000 NA 0.09 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.5200000
F013 Vassiliadou_2015 2015 Greece E570 Sand smelt Atherina boyeri vertebrate marine fish 79.11 PFDoDA 12 NA No Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.5200000 576.9231 C149 Shared control NA 13.000000 1 ng/g 1.0800000 NA 0.0300000 sd technical 13.000000 1 1.9800000 NA 0.04 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.5200000
F013 Vassiliadou_2015 2015 Greece E571 Sand smelt Atherina boyeri vertebrate marine fish 79.11 PFOS 8 linear Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.5200000 576.9231 C149 Shared control NA 13.000000 1 ng/g 1.1600000 NA 0.0500000 sd technical 13.000000 1 3.0100000 NA 0.13 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.5200000
F013 Vassiliadou_2015 2015 Greece E572 Sardine Sardina pilchardus vertebrate marine fish 57.26 PFDoDA 12 NA No Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.8800000 340.9091 C150 Shared control NA 4.666667 1 ng/g 0.1000000 <LOD NA Not available bacause Mc/Me is below LOD/LOQ NA 4.666667 1 0.9300000 NA 0.03 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.8800000
F013 Vassiliadou_2015 2015 Greece E573 Striped mullet Mullus barbatus vertebrate marine fish 61.32 PFNA 9 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.5700000 526.3158 C151 Shared control NA 5.000000 1 ng/g 0.6000000 NA 0.0300000 sd technical 5.000000 1 0.5700000 NA 0.11 technical 1 ng/g 0.42 1.25 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.5700000
F013 Vassiliadou_2015 2015 Greece E574 Striped mullet Mullus barbatus vertebrate marine fish 61.32 PFDA 10 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.5700000 526.3158 C151 Shared control NA 5.000000 1 ng/g 0.6500000 NA 0.0600000 sd technical 5.000000 1 0.5600000 NA 0.07 technical 1 ng/g 0.69 2.08 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.5700000
F013 Vassiliadou_2015 2015 Greece E575 Striped mullet Mullus barbatus vertebrate marine fish 61.32 PFUnDA 11 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.5700000 526.3158 C151 Shared control NA 5.000000 1 ng/g 1.0500000 NA 0.1300000 sd technical 5.000000 1 0.7300000 NA 0.2 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.5700000
F013 Vassiliadou_2015 2015 Greece E576 Striped mullet Mullus barbatus vertebrate marine fish 61.32 PFDoDA 12 NA No Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.5700000 526.3158 C151 Shared control NA 5.000000 1 ng/g 0.1000000 <LOD NA Not available bacause Mc/Me is below LOD/LOQ technical 5.000000 1 1.3800000 NA 0.07 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.5700000
F013 Vassiliadou_2015 2015 Greece E577 Striped mullet Mullus barbatus vertebrate marine fish 61.32 PFOS 8 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.5700000 526.3158 C151 Shared control NA 5.000000 1 ng/g 5.6600000 NA 0.1500000 sd technical 5.000000 1 0.1000000 <LOD NA NA 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.5700000
F013 Vassiliadou_2015 2015 Greece E578 Shrimp Parapenaeus longirostris vertebrate crustacea NA PFPeA 5 NA No Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4800000 625.0000 C152 Shared control NA 10.000000 1 ng/g 4.9400000 NA 0.2600000 sd technical 10.000000 1 14.8800000 NA 1.61 technical 1 ng/g 0.39 1.17 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4800000
F013 Vassiliadou_2015 2015 Greece E579 Shrimp Parapenaeus longirostris vertebrate crustacea NA PFOA 8 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4800000 625.0000 C152 Shared control NA 10.000000 1 ng/g 0.3000000 <LOD NA Not available bacause Mc/Me is below LOD/LOQ technical 10.000000 1 0.9900000 NA 0.21 technical 1 ng/g 0.6 1.82 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4800000
F013 Vassiliadou_2015 2015 Greece E580 Shrimp Parapenaeus longirostris vertebrate crustacea NA PFNA 9 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4800000 625.0000 C152 Shared control NA 10.000000 1 ng/g 1.2700000 NA 0.0700000 sd technical 10.000000 1 1.5200000 NA 0.11 technical 1 ng/g 0.42 1.25 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4800000
F013 Vassiliadou_2015 2015 Greece E581 Shrimp Parapenaeus longirostris vertebrate crustacea NA PFDA 10 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4800000 625.0000 C152 Shared control NA 10.000000 1 ng/g 1.7300000 NA 0.0800000 sd technical 10.000000 1 1.8100000 NA 0.19 technical 1 ng/g 0.69 2.08 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4800000
F013 Vassiliadou_2015 2015 Greece E582 Shrimp Parapenaeus longirostris vertebrate crustacea NA PFUnDA 11 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4800000 625.0000 C152 Shared control NA 10.000000 1 ng/g 2.7600000 NA 0.2100000 sd technical 10.000000 1 6.8200000 NA 0.22 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4800000
F013 Vassiliadou_2015 2015 Greece E583 Shrimp Parapenaeus longirostris vertebrate crustacea NA PFDoDA 12 NA No Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4800000 625.0000 C152 Shared control NA 10.000000 1 ng/g 1.3600000 NA 0.0900000 sd technical 10.000000 1 2.3100000 NA 0.09 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4800000
F013 Vassiliadou_2015 2015 Greece E584 Shrimp Parapenaeus longirostris vertebrate crustacea NA PFBS 4 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4800000 625.0000 C152 Shared control NA 10.000000 1 ng/g 1.3700000 NA 0.1600000 sd technical 10.000000 1 0.2850000 <LOD NA NA 1 ng/g 0.57 1.7 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4800000
F013 Vassiliadou_2015 2015 Greece E585 Shrimp Parapenaeus longirostris vertebrate crustacea NA PFOS 8 linear Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.4800000 625.0000 C152 Shared control NA 10.000000 1 ng/g 5.1500000 NA 0.3900000 sd technical 10.000000 1 8.0200000 NA 0.42 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.4800000
F013 Vassiliadou_2015 2015 Greece E586 Squid Loligo vulgaris vertebrate mollusca 47.87 PFPeA 5 NA No Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.3900000 769.2308 C153 Shared control NA 6.000000 1 ng/g 0.1950000 <LOD NA sd technical 6.000000 1 5.0600000 NA 0.19 technical 1 ng/g 0.39 1.17 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.3900000
F013 Vassiliadou_2015 2015 Greece E587 Squid Loligo vulgaris vertebrate mollusca 47.87 PFDA 10 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.3900000 769.2308 C153 Shared control NA 6.000000 1 ng/g 0.3450000 <LOD NA sd technical 6.000000 1 0.5100000 NA 0.04 technical 1 ng/g 0.69 2.08 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.3900000
F013 Vassiliadou_2015 2015 Greece E588 Squid Loligo vulgaris vertebrate mollusca 47.87 PFUnDA 11 NA Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.3900000 769.2308 C153 Shared control NA 6.000000 1 ng/g 0.3500000 <LOD NA sd technical 6.000000 1 1.0400000 NA 0.02 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.3900000
F013 Vassiliadou_2015 2015 Greece E589 Squid Loligo vulgaris vertebrate mollusca 47.87 PFDoDA 12 NA No Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.3900000 769.2308 C153 Shared control NA 6.000000 1 ng/g 0.1000000 <LOD NA Not available bacause Mc/Me is below LOD/LOQ NA 6.000000 1 1.6500000 NA 0.07 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.3900000
F013 Vassiliadou_2015 2015 Greece E590 Squid Loligo vulgaris vertebrate mollusca 47.87 PFOS 8 linear Yes Frying oil-based NA 170 NA No Yes olive oil 300.000 300.000 0.3900000 769.2308 C153 Shared control NA 6.000000 1 ng/g 0.1000000 <LOD NA sd technical 6.000000 1 1.5600000 NA 0.17 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.3900000
F013 Vassiliadou_2015 2015 Greece E591 Anchovy Engraulis encrasicolus vertebrate marine fish 33.16 PFDA 10 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C154 Shared control NA 13.000000 1 ng/g 0.3450000 <LOD NA sd technical 13.000000 1 0.8300000 NA 0.01 technical 1 ng/g 0.69 2.08 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E592 Anchovy Engraulis encrasicolus vertebrate marine fish 33.16 PFUnDA 11 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C154 Shared control NA 13.000000 1 ng/g 1.5000000 NA 0.0400000 sd technical 13.000000 1 2.7300000 NA 0.13 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E593 Anchovy Engraulis encrasicolus vertebrate marine fish 33.16 PFDoDA 12 NA No Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C154 Shared control NA 13.000000 1 ng/g 1.8600000 NA 0.1900000 sd technical 13.000000 1 3.5200000 NA 0.1 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E594 Anchovy Engraulis encrasicolus vertebrate marine fish 33.16 PFOS 8 linear Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C154 Shared control NA 13.000000 1 ng/g 3.0600000 NA 0.1000000 sd technical 13.000000 1 6.2900000 NA 0.34 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E595 Bogue Boops boops vertebrate marine fish 7.44 PFUnDA 11 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C155 Shared control NA 4.000000 1 ng/g 0.2400000 NA 0.0300000 sd technical 4.000000 1 0.4300000 NA 0.03 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E596 Bogue Boops boops vertebrate marine fish 7.44 PFDoDA 12 NA No Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C155 Shared control NA 4.000000 1 ng/g 0.5600000 NA 0.0800000 sd technical 4.000000 1 0.6300000 NA 0.02 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E597 Bogue Boops boops vertebrate marine fish 7.44 PFOS 8 linear Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C155 Shared control NA 4.000000 1 ng/g 0.8200000 NA 0.0400000 sd technical 4.000000 1 0.8700000 NA 0.07 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E598 Hake Merluccius merluccius vertebrate marine fish 18.91 PFDA 10 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C156 Shared control NA 6.666667 1 ng/g 0.3450000 <LOD NA Not available bacause Mc/Me is below LOD/LOQ NA 6.666667 1 0.8200000 NA 0.03 technical 1 ng/g 0.69 2.08 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E599 Hake Merluccius merluccius vertebrate marine fish 18.91 PFUnDA 11 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C156 Shared control NA 6.666667 1 ng/g 0.4200000 NA 0.0500000 sd technical 6.666667 1 1.1100000 NA 0.15 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E600 Hake Merluccius merluccius vertebrate marine fish 18.91 PFDoDA 12 NA No Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C156 Shared control NA 6.666667 1 ng/g 0.6200000 NA 0.0800000 sd technical 6.666667 1 1.8900000 NA 0.05 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E601 Hake Merluccius merluccius vertebrate marine fish 18.91 PFBS 4 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C156 Shared control NA 6.666667 1 ng/g 0.4500000 NA 0.0700000 sd technical 6.666667 1 0.2850000 <LOD NA NA 1 ng/g 0.57 1.7 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E602 Hake Merluccius merluccius vertebrate marine fish 18.91 PFOS 8 linear Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C156 Shared control NA 6.666667 1 ng/g 0.8400000 NA 0.1000000 sd technical 6.666667 1 2.4000000 NA 0.13 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E603 Sardine Sardina pilchardus vertebrate marine fish 9.95 PFDA 10 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C157 Shared control NA 4.666667 1 ng/g 0.3450000 <LOD NA Not available bacause Mc/Me is below LOD/LOQ NA 4.666667 1 0.8700000 NA 0.03 technical 1 ng/g 0.69 2.08 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E604 Sardine Sardina pilchardus vertebrate marine fish 9.95 PFUnDA 11 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C157 Shared control NA 4.666667 1 ng/g 0.3500000 <LOD NA sd technical 4.666667 1 1.7000000 NA 0.13 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E605 Sardine Sardina pilchardus vertebrate marine fish 9.95 PFDoDA 12 NA No Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C157 Shared control NA 4.666667 1 ng/g 0.1000000 <LOD NA sd technical 4.666667 1 3.1900000 NA 0.09 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E606 Striped mullet Mullus barbatus vertebrate marine fish 17.66 PFNA 9 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C158 Shared control NA 5.000000 1 ng/g 0.6000000 NA 0.0300000 sd technical 5.000000 1 0.5000000 NA 0.05 technical 1 ng/g 0.42 1.25 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E607 Striped mullet Mullus barbatus vertebrate marine fish 17.66 PFDA 10 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C158 Shared control NA 5.000000 1 ng/g 0.6500000 NA 0.0600000 sd technical 5.000000 1 0.3450000 <LOD NA NA 1 ng/g 0.69 2.08 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E608 Striped mullet Mullus barbatus vertebrate marine fish 17.66 PFUnDA 11 NA Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C158 Shared control NA 5.000000 1 ng/g 1.0500000 NA 0.1300000 sd technical 5.000000 1 0.8200000 NA 0.02 technical 1 ng/g 0.7 2.11 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E609 Striped mullet Mullus barbatus vertebrate marine fish 17.66 PFOS 8 linear Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C158 Shared control NA 5.000000 1 ng/g 5.6600000 NA 0.1500000 sd technical 5.000000 1 10.2300000 NA 0.53 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E610 Squid Loligo vulgaris vertebrate mollusca 24.29 PFOA 8 NA No Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C159 Shared control NA 6.000000 1 ng/g 0.3000000 <LOD NA Not available bacause Mc/Me is below LOD/LOQ NA 6.000000 1 0.4000000 NA 0.01 technical 1 ng/g 0.6 1.82 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E611 Squid Loligo vulgaris vertebrate mollusca 24.29 PFDoDA 12 NA No Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C159 Shared control NA 6.000000 1 ng/g 0.1000000 <LOD NA sd technical 6.000000 1 1.0900000 NA 0.02 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000
F013 Vassiliadou_2015 2015 Greece E612 Squid Loligo vulgaris vertebrate mollusca 24.29 PFOS 8 linear Yes Grilling No liquid NA 180 NA No No NA NA 0.000 NA NA C159 Shared control NA 6.000000 1 ng/g 0.1000000 <LOD NA sd technical 6.000000 1 1.1900000 NA 0.17 technical 1 ng/g 0.2 0.59 Independent Table 3 No Authors replied, we received liquid/fish ratio in personal communication from author, mass might not be correct as it back-calculated from averages (not included in paper). For sample sizes, there are no sample sizes per treatment. They only provide the total number of specimens before dividing them up equally for each treatment. NA NA 0.0000000

Import phylogenetic information and calculate phylogenetic variance-covariance matrix

The phylogenetic tree was generated in the tree_cooked_fish_MA.Rmd document

tree <- read.tree(here("data", "phylogenetic_tree.tre"))  # Import phylogenetic tree (see tree_cooked_fish_MA.Rmd for more details) 

tree <- compute.brlen(tree)  # Generate branch lengths 

cor_tree <- vcv(tree, corr = T)  # Generate phylogenetic variance-covariance matrix 

dat$Phylogeny <- as.factor(str_replace(dat$Species_Scientific, " ", "_"))  # Add the `phylogeny` column to the data frame

colnames(cor_tree) %in% dat$Phylogeny  # Check correspondence between tip names and data frame
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [31] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
# checking all species are in the data
# match(unique(dat$Phylogeny),colnames(cor_tree))
match(dat$Phylogeny, colnames(cor_tree))
##   [1] 12 14 28 28 28 28 28 28 13 32 32  6  6  6  6  6  6  6  6  6  6  6  6  6  6
##  [26]  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  6  2  2  2  2  2  2  2  2  2
##  [51]  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  7
##  [76]  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7
## [101]  7  7  7  7  7  7  7 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25
## [126] 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25  3 26 26 18 18 18 18 34 34 34
## [151] 34 34 34 22 22 31 31 30 30 30 30 30 23 23 23 23  1  1  1  1  1  1  1  1  1
## [176]  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 15 15
## [201] 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 38 38 38
## [226] 38 38 38 38 38 38 38 38 38 38 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
## [251] 16 16 16 16 16 16 16 16 16 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27
## [276] 27 27 27 27 27 27 27 27  8  8  8  8  8  8  8  8  8  8  8  8  8  8  8  8  8
## [301]  8  8  8  8  8  8  8 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19
## [326] 19 19 19 19 19 19  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9
## [351]  9  9  9  9  9 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
## [376] 14 14 14 14 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
## [401] 17 17 17 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
## [426] 11 11 24 24 24 24 24 24 24 24 24 37 37 37 37 37 37 37 37 37 37 37 37 37 35
## [451] 35 35 35 35 35 35  5  5  5 20 20 20 29 29 29 29 21 21 10 10 10  4 27 27 27
## [476] 27 27 36 36 36 36 36 36 36 36 33 33 33 33 33  5  5  5  5 20 20 20 29 29 29
## [501] 29 29  4  4  4 27 27 27 27 33 33 33
# plotting tree
plot(tree)

Calculate effect sizes

The average coefficient of variation in PFAS concentration was calculated for each study and treatment, according to Doncaster and Spake (2018) Correction for bias in meta-analysis of little-replicated studies. Methods in Ecology and Evolution; 9:634-644. Then, these values were averaged across studies and used to calculate the lnRR corrected for small sample sizes (for formula, see the lnRR_func above)

dat$Study_ID <- as.factor(dat$Study_ID)
dat$SDe <- as.numeric(dat$SDe)
# Calculate the squared coefficient of variation for control and experimental groups
aCV2 <- dat %>% 
               group_by(Study_ID) %>%  # Group by study 
                    summarise(CV2c = mean((SDc/Mc)^2, na.rm = T),  
                              CV2e = mean((SDe/Me)^2, na.rm = T)) %>% 
                              ungroup() %>% # ungroup 
                              summarise(aCV2c = mean(CV2c, na.rm = T), # Mean CV^2 for exp and control groups across studies
                              aCV2e = mean(CV2e, na.rm = T)) 

lnRR <-  # Calculate effect sizes
                    lnRR_func(Mc = dat$Mc, 
                    Nc = dat$Nc, 
                    Me = dat$Me, 
                    Ne = dat$Ne, 
                    aCV2c = aCV2[[1]], 
                    aCV2e = aCV2[[2]])




var_lnRR <- ifelse(dat$Design == "Dependent", # Calculate sampling variance
                    var_lnRR_dep(Mc = dat$Mc, 
                    Nc = dat$Nc, 
                    Me = dat$Me, 
                    Ne = dat$Ne, 
                    aCV2c = aCV2[[1]], 
                    aCV2e = aCV2[[2]],
                    rho = 0.5), 
                    var_lnRR_ind(Mc = dat$Mc, 
                    Nc = dat$Nc, 
                    Me = dat$Me, 
                    Ne = dat$Ne, 
                    aCV2c = aCV2[[1]], 
                    aCV2e = aCV2[[2]])) 



dat <- dat %>% 
             mutate(N_tilde = (Nc*Ne)/(Nc + Ne)) # getting effective sample size 

dat <- cbind(dat, lnRR, var_lnRR) # Merge effect sizes with the data frame

VCV_lnRR <- make_VCV_matrix(dat, V = "var_lnRR", cluster = "Cohort_ID", obs = "Effect_ID", rho = 0.5) # Because some effect sizes share the same control, we generated a variance-covariance matrix to account for correlated errors (i.e. effectively dividing the weight of the correlated estimates by half)

Distribution of effect sizes

# mean
ggplot(dat, aes(x = lnRR)) + geom_histogram(fill = "salmon", col = "black", binwidth = 0.2) +
    theme_classic()

# variance
ggplot(dat, aes(x = var_lnRR)) + geom_histogram(fill = "salmon", col = "black", binwidth = 0.05) +
    theme_classic()

# log variance
ggplot(dat, aes(x = var_lnRR)) + geom_histogram(fill = "salmon", col = "black", binwidth = 0.05) +
    scale_x_log10() + theme_classic()

Sample sizes

Table of sample sizes

dat %>%
       summarise( # Calculate the number of effect sizes, studies and species for the main categorical variables
                 `Studies` = n_distinct(Study_ID),
                 `Species` = n_distinct(Species_common),
                 `PFAS type` = n_distinct(PFAS_type),
                 `Cohorts` = n_distinct(Cohort_ID),
                 `Effect sizes` = n_distinct(Effect_ID),
    
                 `Effect sizes (Oil-based)` = n_distinct(Effect_ID[Cooking_Category=="oil-based"]),
                 `Studies (Oil-based)` = n_distinct(Study_ID[Cooking_Category=="oil-based"]),
                 `Species (Oil-based)` = n_distinct(Species_common[Cooking_Category=="oil-based"]),

                 `Effect sizes (Water-based)` = n_distinct(Effect_ID[Cooking_Category=="water-based"]),
                 `Studies (Water-based)` = n_distinct(Study_ID[Cooking_Category=="water-based"]),
                 `Species (Water-based)` = n_distinct(Species_common[Cooking_Category=="water-based"]),

                 `Effect sizes (No liquid)` = n_distinct(Effect_ID[Cooking_Category=="No liquid"]),
                 `Studies (No liquid)` = n_distinct(Study_ID[Cooking_Category=="No liquid"]),
                 `Species (No liquid)` = n_distinct(Species_common[Cooking_Category=="No liquid"]),) -> table_sample_sizes

table_sample_sizes<-t(table_sample_sizes)
colnames(table_sample_sizes)<-"n (sample size)"
kable(table_sample_sizes) %>% kable_styling("striped", position="left")
n (sample size)
Studies 10
Species 39
PFAS type 18
Cohorts 153
Effect sizes 512
Effect sizes (Oil-based) 303
Studies (Oil-based) 7
Species (Oil-based) 28
Effect sizes (Water-based) 140
Studies (Water-based) 8
Species (Water-based) 23
Effect sizes (No liquid) 69
Studies (No liquid) 2
Species (No liquid) 14

Summary of the dataset

kable(summary(dat), "html") %>%
    kable_styling("striped", position = "left") %>%
    scroll_box(width = "100%", height = "500px")
Study_ID Author_year Publication_year Country_firstAuthor Effect_ID Species_common Species_Scientific Invertebrate_vertebrate Fish_mollusc Moisture_loss_in_percent PFAS_type PFAS_carbon_chain linear_total Choice_of_9 Cooking_method Cooking_Category Comments_cooking Temperature_in_Celsius Length_cooking_time_in_s Water Oil Oil_type Volume_liquid_ml Volume_liquid_ml_0 Ratio_liquid_fish Weigh_g_sample Cohort_ID Cohort_comment Cohort_comment_2 Nc Pooled_Nc Unit_PFAS_conc Mc Mc_comment Sc sd Sc_technical_biological Ne Pooled_Ne Me Me_comment Se Se_technical_biological If_technical_how_many Unit_LOD_LOQ LOD LOQ Design DataSource Raw_data_provided General_comments checked SDc SDe Ratio_liquid_fish_0 Phylogeny N_tilde lnRR var_lnRR
F010 :192 Length:512 Min. :2008 Length:512 Length:512 Length:512 Length:512 Length:512 Length:512 Min. : 6.77 Length:512 Min. : 3.000 Length:512 Length:512 Length:512 Length:512 Length:512 Min. : 75.0 Min. : 120.0 Length:512 Length:512 Length:512 Min. : 0.341 Min. : 0.0 Min. : 0.00266 Min. : 10.0 Length:512 Length:512 Length:512 Min. : 1.000 Min. :1.000 Length:512 Min. : 0.002 Length:512 Min. : 0.0010 Length:512 Length:512 Min. : 1.000 Min. :1.000 Min. : 0.0020 Length:512 Length:512 Length:512 Length:512 Length:512 Length:512 Length:512 Length:512 Length:512 Length:512 Length:512 Length:512 Min. : 0.0010 Min. : 0.0010 Min. : 0.00000 Cyprinus_carpio : 33 Min. : 0.500 Min. :-6.0350 Min. :0.01679
F003 :129 Class :character 1st Qu.:2014 Class :character Class :character Class :character Class :character Class :character Class :character 1st Qu.:14.45 Class :character 1st Qu.: 8.000 Class :character Class :character Class :character Class :character Class :character 1st Qu.:100.0 1st Qu.: 600.0 Class :character Class :character Class :character 1st Qu.: 11.000 1st Qu.: 5.0 1st Qu.: 0.10004 1st Qu.: 10.0 Class :character Class :character Class :character 1st Qu.: 5.000 1st Qu.:1.000 Class :character 1st Qu.: 0.160 Class :character 1st Qu.: 0.0010 Class :character Class :character 1st Qu.: 5.000 1st Qu.:1.000 1st Qu.: 0.0940 Class :character Class :character Class :character Class :character Class :character Class :character Class :character Class :character Class :character Class :character Class :character Class :character 1st Qu.: 0.0354 1st Qu.: 0.0585 1st Qu.: 0.05116 Mullus_barbatus : 33 1st Qu.: 2.500 1st Qu.:-0.8778 1st Qu.:0.08393
F013 : 56 Mode :character Median :2019 Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Median :18.35 Mode :character Median : 8.000 Mode :character Mode :character Mode :character Mode :character Mode :character Median :160.0 Median : 600.0 Mode :character Mode :character Mode :character Median : 300.000 Median : 250.0 Median : 2.50000 Median : 70.0 Mode :character Mode :character Mode :character Median :10.000 Median :1.000 Mode :character Median : 0.298 Mode :character Median : 0.0100 Mode :character Mode :character Median :10.000 Median :1.000 Median : 0.2285 Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Mode :character Median : 0.1580 Median : 0.1460 Median : 0.52000 Salvelinus_namaycush : 33 Median : 5.000 Median :-0.1671 Median :0.09270
F006 : 32 NA Mean :2017 NA NA NA NA NA NA Mean :21.04 NA Mean : 8.994 NA NA NA NA NA Mean :161.3 Mean : 733.3 NA NA NA Mean : 271.946 Mean : 231.8 Mean :13.58240 Mean : 149.1 NA NA NA Mean : 8.486 Mean :2.316 NA Mean : 3.494 NA Mean : 1.7676 NA NA Mean : 8.486 Mean :2.316 Mean : 3.2322 NA NA NA NA NA NA NA NA NA NA NA NA Mean : 4.4069 Mean : 4.4491 Mean :11.68141 Sander_vitreus : 33 Mean : 4.243 Mean :-0.3633 Mean :0.13527
F011 : 29 NA 3rd Qu.:2019 NA NA NA NA NA NA 3rd Qu.:21.31 NA 3rd Qu.:11.000 NA NA NA NA NA 3rd Qu.:175.0 3rd Qu.: 900.0 NA NA NA 3rd Qu.: 300.000 3rd Qu.: 300.0 3rd Qu.:30.00000 3rd Qu.: 178.4 NA NA NA 3rd Qu.:10.000 3rd Qu.:5.000 NA 3rd Qu.: 1.083 NA 3rd Qu.: 0.1185 NA NA 3rd Qu.:10.000 3rd Qu.:5.000 3rd Qu.: 1.0505 NA NA NA NA NA NA NA NA NA NA NA NA 3rd Qu.: 0.5600 3rd Qu.: 0.6518 3rd Qu.:30.00000 Ctenopharyngodon_idell : 32 3rd Qu.: 5.000 3rd Qu.: 0.1848 3rd Qu.:0.16787
F005 : 26 NA Max. :2020 NA NA NA NA NA NA Max. :79.11 NA Max. :14.000 NA NA NA NA NA Max. :300.0 Max. :1500.0 NA NA NA Max. :2500.000 Max. :2500.0 Max. :45.33092 Max. :1000.0 NA NA NA Max. :50.000 Max. :6.000 NA Max. :86.689 NA Max. :133.7000 NA NA Max. :50.000 Max. :6.000 Max. :134.4379 NA NA NA NA NA NA NA NA NA NA NA NA Max. :133.7000 Max. :130.5000 Max. :45.33092 Oncorhynchus_tshawytscha: 30 Max. :25.000 Max. : 3.4598 Max. :0.83934
(Other): 48 NA NA NA NA NA NA NA NA NA’s :284 NA NA NA NA NA NA NA NA’s :6 NA’s :56 NA NA NA NA’s :114 NA’s :45 NA’s :88 NA’s :106 NA NA NA NA NA NA NA NA NA’s :53 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA’s :330 NA’s :328 NA’s :19 (Other) :318 NA NA NA

Intercept meta-analytical model

Determine the random effect structure

Cohort_ID and Phylogeny explained virtually no variance in the model. Hence, they was removed from the model. All the other random effects explained significant variance and were kept in subsequent models

MA_all_rand_effects <- rma.mv(lnRR, VCV_lnRR, # Add `VCV_lnRR` to account for correlated errors errors between cohorts (shared_controls)
              random = list(~1|Study_ID, # Identity of the study
                            ~1|Phylogeny, # Phylogenetic correlation
                            ~1|Cohort_ID, # Identity of the cohort (shared controls)
                            ~1|Species_common, # Non-phylogenetic correlation between species
                            ~1|PFAS_type, # Type of PFAS 
                            ~1|Effect_ID), # Effect size identity 
              R= list(Phylogeny = cor_tree), # Assign the 'Phylogeny' argument to the phylogenetic variance-covariance matrix
              test = "t", 
              data = dat,
              sparse = TRUE)

summary(MA_all_rand_effects) # Cohort ID does not explain any variance 
## 
## Multivariate Meta-Analysis Model (k = 512; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -622.2065  1244.4131  1258.4131  1288.0677  1258.6357   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor    R 
## sigma^2.1  0.5882  0.7670     10     no        Study_ID   no 
## sigma^2.2  0.0000  0.0002     38     no       Phylogeny  yes 
## sigma^2.3  0.0000  0.0000    153     no       Cohort_ID   no 
## sigma^2.4  0.1777  0.4216     39     no  Species_common   no 
## sigma^2.5  0.0983  0.3136     18     no       PFAS_type   no 
## sigma^2.6  0.4786  0.6918    512     no       Effect_ID   no 
## 
## Test for Heterogeneity:
## Q(df = 511) = 7490.5888, p-val < .0001
## 
## Model Results:
## 
## estimate      se     tval   df    pval    ci.lb   ci.ub 
##  -0.3366  0.2830  -1.1895  511  0.2348  -0.8926  0.2194    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Intercept meta-analytical model and percentage of heterogeneity

MA_model <- rma.mv(lnRR, VCV_lnRR, 
              random = list(~1|Study_ID,
                            ~1|Species_common, # Removed Cohort_ID and phylogeny
                            ~1|PFAS_type, 
                            ~1|Effect_ID), 
              test = "t", 
              data = dat,
              sparse = TRUE)

summary(MA_model)
## 
## Multivariate Meta-Analysis Model (k = 512; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -622.2065  1244.4131  1254.4131  1275.5949  1254.5319   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.5882  0.7670     10     no        Study_ID 
## sigma^2.2  0.1777  0.4216     39     no  Species_common 
## sigma^2.3  0.0983  0.3136     18     no       PFAS_type 
## sigma^2.4  0.4786  0.6918    512     no       Effect_ID 
## 
## Test for Heterogeneity:
## Q(df = 511) = 7490.5888, p-val < .0001
## 
## Model Results:
## 
## estimate      se     tval   df    pval    ci.lb   ci.ub 
##  -0.3366  0.2830  -1.1895  511  0.2348  -0.8926  0.2194    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
round(i2_ml(MA_model),2) # Percentage of heterogeneity explained by each random effect
##          I2_Total       I2_Study_ID I2_Species_common      I2_PFAS_type 
##             92.92             40.70             12.30              6.80 
##      I2_Effect_ID 
##             33.12
orchard_plot(MA_model, mod = "1", xlab = "lnRR", alpha=0.4, data = dat, group = "Study_ID", trunk.size=9, branch.size = 2) +  
           scale_colour_manual(values = "darkorange")+ # change colours
           scale_fill_manual(values="darkorange")+ 
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13)) 

save(MA_model, MA_all_rand_effects, file = here("Rdata", "int_MA_models.RData")) # save the models 

Single moderator meta-regressions

Function to run all models with the same structure

run_model<-function(data,formula){
  data<-as.data.frame(data) # convert data set into a data frame to calculate VCV matrix 
  VCV<-make_VCV_matrix(data
                       , V = "var_lnRR", cluster = "Cohort_ID", obs = "Effect_ID", rho = 0.5) # create VCV matrix for the specified data
  
  rma.mv(lnRR, VCV, # run the model, as described earlier
         mods=formula,
         random = list(~1|Study_ID,
                       ~1|Species_common, 
                       ~1|PFAS_type, 
                       ~1|Effect_ID), 
         test = "t", 
         data = data,
         sparse=TRUE) # Make the model run faster
}

Functions to run plots with the same structure

plot_continuous<-function(data, model, moderator, xlab){

pred<-predict.rma(model)

data %>% mutate(fit=pred$pred, 
               ci.lb=pred$ci.lb,
               ci.ub=pred$ci.ub,
               pr.lb=pred$cr.lb,
               pr.ub=pred$cr.ub) %>% # Add confidence intervals, mean predictions and prediction intervals
ggplot(aes(x = moderator, y = lnRR)) +
     geom_ribbon(aes(ymin = pr.lb, ymax = pr.ub, color = NULL), alpha = .075) + # Shaded area for prediction intervals
     geom_ribbon(aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = .2) + # Shaded area for confidence intervals
     geom_point(aes(size=(1/sqrt(var_lnRR)), fill=Cooking_Category), shape=21, alpha=0.8) + # Points scaled by precision
     scale_fill_manual(values=c("#55C667FF", "goldenrod2", "dodgerblue3"))+
     geom_line(aes(y = fit), size = 1.5)+  # Regression line
  labs(x = xlab, y = "lnRR", size = "Precison (1/SE)") +
  theme_bw() +
  scale_size_continuous(range=c(1,9))+ # Point scaling
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position=c(0,0), 
          legend.justification = c(0,0),
          legend.background = element_blank(), 
          legend.direction="horizontal",
          legend.title = element_text(size=15), 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))
}

Single-moderator models

All continuous variables were z-transformed.

Note that all analyses involving the liquid/animal tissue ratio were ran by considering ratio values for the no-liquid cooking category as either “NA” or “0”. The results presented in the manuscript consider the ratio to be 0.

Cooking time

# Length_cooking_time_in_s

time_model <- run_model(dat, ~scale(Length_cooking_time_in_s))  # z-transformed

summary(time_model)
## 
## Multivariate Meta-Analysis Model (k = 456; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -515.8654  1031.7308  1043.7308  1068.4393  1043.9187   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.5315  0.7290      9     no        Study_ID 
## sigma^2.2  0.1701  0.4124     30     no  Species_common 
## sigma^2.3  0.0988  0.3143     17     no       PFAS_type 
## sigma^2.4  0.4094  0.6398    456     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 454) = 6619.4345, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 454) = 27.5934, p-val < .0001
## 
## Model Results:
## 
##                                  estimate      se     tval   df    pval 
## intrcpt                           -0.5570  0.2874  -1.9377  454  0.0533 
## scale(Length_cooking_time_in_s)   -0.2565  0.0488  -5.2529  454  <.0001 
##                                    ci.lb    ci.ub 
## intrcpt                          -1.1218   0.0079    . 
## scale(Length_cooking_time_in_s)  -0.3524  -0.1605  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(time_model)  # Estimate R squared
##    R2_marginal R2_conditional 
##     0.05157579     0.67902811
# Plot
dat.time <- filter(dat, Length_cooking_time_in_s != "NA")  # Need to remove the NAs from the data
plot_continuous(dat.time, time_model, dat.time$Length_cooking_time_in_s, "Cooking time (s)")

Liquid/animal tissue ratio

Ratio between liquid volume and tissue sample, with dry cooking coded as 0

volume0_model <- run_model(dat, ~scale(log(Ratio_liquid_fish_0 + 1)))  # logged and z-transformed after adding 1

summary(volume0_model)
## 
## Multivariate Meta-Analysis Model (k = 493; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -593.3771  1186.7541  1198.7541  1223.9328  1198.9277   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.6120  0.7823      8     no        Study_ID 
## sigma^2.2  0.1610  0.4013     35     no  Species_common 
## sigma^2.3  0.1235  0.3514     18     no       PFAS_type 
## sigma^2.4  0.4681  0.6842    493     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 491) = 6429.2787, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 491) = 4.5602, p-val = 0.0332
## 
## Model Results:
## 
##                                      estimate      se     tval   df    pval 
## intrcpt                               -0.4507  0.3135  -1.4374  491  0.1512 
## scale(log(Ratio_liquid_fish_0 + 1))   -0.1161  0.0543  -2.1355  491  0.0332 
##                                        ci.lb    ci.ub 
## intrcpt                              -1.0667   0.1654    
## scale(log(Ratio_liquid_fish_0 + 1))  -0.2228  -0.0093  * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(volume0_model)
##    R2_marginal R2_conditional 
##    0.009773911    0.660335896
# Plot
dat.volume0 <- filter(dat, Ratio_liquid_fish_0 != "NA")
plot_continuous(dat.volume0, volume0_model, log(dat.volume0$Ratio_liquid_fish_0 +
    1), "ln (Liquid volume to tissue sample ratio + 1)")

Ratio between liquid volume and tissue sample, with dry cooking coded as NA

# Ratio_liquid_fish
dat <- dat %>%
    mutate(Ratio_liquid_fish_0 = ifelse(Cooking_Category == "No liquid", 0, Ratio_liquid_fish))  # Add a 0 when the cooking category is 'No liquid', otherwise keep the same value of Ratio_liquid_fish

volume_model <- run_model(dat, ~scale(log(Ratio_liquid_fish)))  # logged and z-transformed

summary(volume_model)
## 
## Multivariate Meta-Analysis Model (k = 424; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -527.2307  1054.4614  1066.4614  1090.7314  1066.6638   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.5651  0.7517      8     no        Study_ID 
## sigma^2.2  0.0000  0.0001     35     no  Species_common 
## sigma^2.3  0.1173  0.3424     18     no       PFAS_type 
## sigma^2.4  0.5461  0.7390    424     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 422) = 6027.2722, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 422) = 6.7104, p-val = 0.0099
## 
## Model Results:
## 
##                                estimate      se     tval   df    pval    ci.lb 
## intrcpt                         -0.4646  0.2895  -1.6050  422  0.1092  -1.0335 
## scale(log(Ratio_liquid_fish))   -0.3004  0.1160  -2.5904  422  0.0099  -0.5284 
##                                  ci.ub 
## intrcpt                         0.1044     
## scale(log(Ratio_liquid_fish))  -0.0725  ** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(volume_model)
##    R2_marginal R2_conditional 
##     0.06844458     0.58587340
# Plot
dat.volume <- filter(dat, Ratio_liquid_fish != "NA")
plot_continuous(dat.volume, volume_model, log(dat.volume$Ratio_liquid_fish), "ln (Liquid volume to tissue sample ratio)")

Cooking temperature

# Temperature_in_Celsius

temp_model <- run_model(dat, ~scale(Temperature_in_Celsius))  # z-transformed 

summary(temp_model)
## 
## Multivariate Meta-Analysis Model (k = 506; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -613.6186  1227.2372  1239.2372  1264.5727  1239.4063   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.5827  0.7634     10     no        Study_ID 
## sigma^2.2  0.1749  0.4182     39     no  Species_common 
## sigma^2.3  0.0952  0.3086     18     no       PFAS_type 
## sigma^2.4  0.4797  0.6926    506     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 504) = 7359.9662, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 504) = 0.0239, p-val = 0.8773
## 
## Model Results:
## 
##                                estimate      se     tval   df    pval    ci.lb 
## intrcpt                         -0.3216  0.2835  -1.1345  504  0.2571  -0.8785 
## scale(Temperature_in_Celsius)    0.0110  0.0712   0.1545  504  0.8773  -0.1288 
##                                 ci.ub 
## intrcpt                        0.2353    
## scale(Temperature_in_Celsius)  0.1508    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(temp_model)
##    R2_marginal R2_conditional 
##   9.072275e-05   6.400161e-01
# Plot
dat.temp <- filter(dat, Temperature_in_Celsius != "NA")
plot_continuous(dat.temp, temp_model, dat.temp$Temperature_in_Celsius, "Cooking temperature")

PFAS carbon chain length

# PFAS_carbon_chain

PFAS_model <- run_model(dat, ~PFAS_carbon_chain)

summary(PFAS_model)
## 
## Multivariate Meta-Analysis Model (k = 512; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -620.7200  1241.4400  1253.4400  1278.8464  1253.6070   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.5872  0.7663     10     no        Study_ID 
## sigma^2.2  0.1795  0.4237     39     no  Species_common 
## sigma^2.3  0.1028  0.3207     18     no       PFAS_type 
## sigma^2.4  0.4788  0.6920    512     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 510) = 7490.4771, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 510) = 0.1785, p-val = 0.6729
## 
## Model Results:
## 
##                    estimate      se     tval   df    pval    ci.lb   ci.ub 
## intrcpt             -0.4548  0.3975  -1.1441  510  0.2531  -1.2359  0.3262    
## PFAS_carbon_chain    0.0130  0.0308   0.4225  510  0.6729  -0.0474  0.0734    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(PFAS_model)
##    R2_marginal R2_conditional 
##   0.0006792794   0.6451388582
plot_continuous(dat, PFAS_model, dat$PFAS_carbon_chain, "PFAS carbon chain length")

Cooking category

# Cooking_Category

category_model<-run_model(dat, ~Cooking_Category-1)
  
summary(category_model)
## 
## Multivariate Meta-Analysis Model (k = 512; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -619.1879  1238.3758  1252.3758  1282.0029  1252.5994   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.5917  0.7692     10     no        Study_ID 
## sigma^2.2  0.1821  0.4268     39     no  Species_common 
## sigma^2.3  0.0994  0.3153     18     no       PFAS_type 
## sigma^2.4  0.4779  0.6913    512     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 509) = 7488.0974, p-val < .0001
## 
## Test of Moderators (coefficients 1:3):
## F(df1 = 3, df2 = 509) = 1.2492, p-val = 0.2913
## 
## Model Results:
## 
##                              estimate      se     tval   df    pval    ci.lb 
## Cooking_CategoryNo liquid     -0.2128  0.3061  -0.6951  509  0.4873  -0.8142 
## Cooking_Categoryoil-based     -0.3940  0.2908  -1.3548  509  0.1761  -0.9652 
## Cooking_Categorywater-based   -0.3085  0.2888  -1.0681  509  0.2860  -0.8759 
##                               ci.ub 
## Cooking_CategoryNo liquid    0.3886    
## Cooking_Categoryoil-based    0.1773    
## Cooking_Categorywater-based  0.2589    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(category_model)
##    R2_marginal R2_conditional 
##    0.003059016    0.647383155
# plot

orchard_plot(category_model, mod = "Cooking_Category", xlab = "lnRR", alpha=0.4, data = dat, group = "Study_ID", trunk.size=9, branch.size = 2) +  
           scale_colour_manual(values = c("#55C667FF", "goldenrod2", "dodgerblue3"))+ # change colours
           scale_fill_manual(values=c("#55C667FF", "goldenrod2", "dodgerblue3"))+ 
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Percentage of moisture loss

This analysis is a posteriori and will only be presented in supplement.

# Moisture_loss_in_percent

moisture_model <- run_model(dat, ~scale(Moisture_loss_in_percent))

summary(moisture_model)
## 
## Multivariate Meta-Analysis Model (k = 228; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -212.0065   424.0130   436.0130   456.5362   436.3965   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.0532  0.2307      6     no        Study_ID 
## sigma^2.2  0.2422  0.4921     18     no  Species_common 
## sigma^2.3  0.0094  0.0968     17     no       PFAS_type 
## sigma^2.4  0.2127  0.4612    228     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 226) = 1173.1726, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 226) = 0.0020, p-val = 0.9648
## 
## Model Results:
## 
##                                  estimate      se    tval   df    pval    ci.lb 
## intrcpt                            0.3614  0.1811  1.9954  226  0.0472   0.0045 
## scale(Moisture_loss_in_percent)    0.0035  0.0783  0.0442  226  0.9648  -0.1508 
##                                   ci.ub 
## intrcpt                          0.7183  * 
## scale(Moisture_loss_in_percent)  0.1577    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(moisture_model)
##    R2_marginal R2_conditional 
##   2.316463e-05   5.889920e-01
# Plot
dat.moisture <- filter(dat, Moisture_loss_in_percent != "NA")
plot_continuous(dat.moisture, moisture_model, dat.moisture$Moisture_loss_in_percent,
    "Percentage of moisture loss")

save(category_model, PFAS_model, temp_model, time_model, volume_model, volume0_model,
    moisture_model, file = here("Rdata", "single_mod_models.RData"))  # Save models

Full models

Full model with Ratio_liquid_fish as 0 for the dry cooking category

full_model0 <- rma.mv(yi = lnRR, V = VCV_lnRR, mods = ~1 + Cooking_Category + scale(Temperature_in_Celsius) +
    scale(Length_cooking_time_in_s) + scale(PFAS_carbon_chain) + scale(log(Ratio_liquid_fish_0 +
    1)), random = list(~1 | Study_ID, ~1 | Species_common, ~1 | PFAS_type, ~1 | Effect_ID),
    test = "t", data = dat, sparse = TRUE)
# btt = c(1:3)) # testing the significance of cooking category - testing first
# 3 regression coefficients)

summary(full_model0)
## 
## Multivariate Meta-Analysis Model (k = 431; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -455.3622   910.7244   932.7244   977.2715   933.3652   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.3890  0.6237      7     no        Study_ID 
## sigma^2.2  0.1514  0.3891     26     no  Species_common 
## sigma^2.3  0.1362  0.3690     17     no       PFAS_type 
## sigma^2.4  0.3598  0.5998    431     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 424) = 5424.4518, p-val < .0001
## 
## Test of Moderators (coefficients 2:7):
## F(df1 = 6, df2 = 424) = 12.3675, p-val < .0001
## 
## Model Results:
## 
##                                      estimate      se     tval   df    pval 
## intrcpt                               -2.4312  0.4296  -5.6587  424  <.0001 
## Cooking_Categoryoil-based              1.6525  0.3294   5.0160  424  <.0001 
## Cooking_Categorywater-based            1.9173  0.3785   5.0650  424  <.0001 
## scale(Temperature_in_Celsius)         -0.0019  0.0982  -0.0189  424  0.9850 
## scale(Length_cooking_time_in_s)       -0.3739  0.0500  -7.4756  424  <.0001 
## scale(PFAS_carbon_chain)               0.0639  0.0811   0.7873  424  0.4316 
## scale(log(Ratio_liquid_fish_0 + 1))   -0.8572  0.1458  -5.8808  424  <.0001 
##                                        ci.lb    ci.ub 
## intrcpt                              -3.2757  -1.5867  *** 
## Cooking_Categoryoil-based             1.0049   2.3000  *** 
## Cooking_Categorywater-based           1.1732   2.6613  *** 
## scale(Temperature_in_Celsius)        -0.1949   0.1912      
## scale(Length_cooking_time_in_s)      -0.4722  -0.2756  *** 
## scale(PFAS_carbon_chain)             -0.0956   0.2233      
## scale(log(Ratio_liquid_fish_0 + 1))  -1.1437  -0.5707  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(full_model0)
##    R2_marginal R2_conditional 
##      0.4884675      0.8224021
save(full_model0, file = here("Rdata", "full_model.RData"))

Full model with Ratio_liquid_fish as NA for the dry cooking category

# Testing cooking categories
full_model <- rma.mv(yi = lnRR, V = VCV_lnRR, mods = ~1 + Cooking_Category + scale(Temperature_in_Celsius) +
    scale(Length_cooking_time_in_s) + scale(PFAS_carbon_chain) + scale(log(Ratio_liquid_fish)),
    random = list(~1 | Study_ID, ~1 | Species_common, ~1 | PFAS_type, ~1 | Effect_ID),
    test = "t", data = dat, sparse = TRUE)
# btt = c(1:3)) # testing the significance of cooking category - testing first
# 3 regression coefficients)

summary(full_model)
## 
## Multivariate Meta-Analysis Model (k = 384; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -429.9562   859.9125   879.9125   919.2614   880.5119   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.3874  0.6224      7     no        Study_ID 
## sigma^2.2  0.1364  0.3694     26     no  Species_common 
## sigma^2.3  0.1234  0.3512     17     no       PFAS_type 
## sigma^2.4  0.4128  0.6425    384     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 378) = 5318.7107, p-val < .0001
## 
## Test of Moderators (coefficients 2:6):
## F(df1 = 5, df2 = 378) = 9.7130, p-val < .0001
## 
## Model Results:
## 
##                                  estimate      se     tval   df    pval 
## intrcpt                           -0.8603  0.3039  -2.8311  378  0.0049 
## Cooking_Categoryoil-based          0.1302  0.1630   0.7992  378  0.4247 
## scale(Temperature_in_Celsius)     -0.3422  0.1260  -2.7154  378  0.0069 
## scale(Length_cooking_time_in_s)   -0.3316  0.0562  -5.8997  378  <.0001 
## scale(PFAS_carbon_chain)           0.0614  0.0801   0.7666  378  0.4438 
## scale(log(Ratio_liquid_fish))     -0.8152  0.1683  -4.8449  378  <.0001 
##                                    ci.lb    ci.ub 
## intrcpt                          -1.4578  -0.2628   ** 
## Cooking_Categoryoil-based        -0.1902   0.4507      
## scale(Temperature_in_Celsius)    -0.5899  -0.0944   ** 
## scale(Length_cooking_time_in_s)  -0.4422  -0.2211  *** 
## scale(PFAS_carbon_chain)         -0.0961   0.2189      
## scale(log(Ratio_liquid_fish))    -1.1460  -0.4843  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(full_model)
##    R2_marginal R2_conditional 
##      0.3637260      0.7522155
save(full_model, file = here("Rdata", "full_model.RData"))

Check collinearity of predictors

## Check for collinerarity - seems fine

vif(full_model)
## 
##       Cooking_Categoryoil-based   scale(Temperature_in_Celsius) 
##                          2.1467                          3.1661 
## scale(Length_cooking_time_in_s)        scale(PFAS_carbon_chain) 
##                          1.0583                          1.0001 
##   scale(log(Ratio_liquid_fish)) 
##                          1.7682
vif(full_model0)
## 
##           Cooking_Categoryoil-based         Cooking_Categorywater-based 
##                             13.1568                             13.8293 
##       scale(Temperature_in_Celsius)     scale(Length_cooking_time_in_s) 
##                              2.1458                              1.0818 
##            scale(PFAS_carbon_chain) scale(log(Ratio_liquid_fish_0 + 1)) 
##                              1.0001                              8.5882
dat %>%
    select(Temperature_in_Celsius, Length_cooking_time_in_s, PFAS_carbon_chain, Ratio_liquid_fish) %>%
    ggpairs()  # Estimate correlations between the variables

Conditional analyses

Inspection of the plots highlighted potential significant decreases in PFAS content with increased cooking time and volume of cooking. Hence, here we used emmeans (download from remotes::install_github(“rvlenth/emmeans”, dependencies = TRUE, build_opts = "")) to generate marginalised means at specified values of the different predictors. Such analysis enable the quantification of the mean effect size after controlling for different values of the moderators.

Note that these analyses were not performed separately using full models with Ratio_liquid_fish taken as NA or 0. Indeed, a full model containing the dry cooking category and the liquid ratio would extrapolate predictions for the dry cooking category at the mean liquid ratio; which is incorrect. Therefore, all full models were ran with the data containing NA for the Ratio_liquid_fish of the dry cooking method; and separate models were ran with a data subset only containing the dry cooking method.

Full model

# Full model in original units (no z-transformation)
dat$log_Ratio_liquid_fish <- log(dat$Ratio_liquid_fish)

full_model_org_units <- run_model(dat, ~-1 + Cooking_Category + Temperature_in_Celsius +
    Length_cooking_time_in_s + PFAS_carbon_chain + log_Ratio_liquid_fish)



# Full model in original units (no z-transformation), but without the 'No
# liquid' data This model will be used for conditional analyses on the volume
# of liquid, where the data without liquid is irrelevant
dat_oil_water <- filter(dat, Cooking_Category != "No liquid")

full_model_org_units_oil_water <- run_model(dat_oil_water, ~-1 + Cooking_Category +
    Temperature_in_Celsius + Length_cooking_time_in_s + PFAS_carbon_chain + log_Ratio_liquid_fish)


# Full model in original units (no z-transformation), with Ratio_liquid_fish_0
dat$log_Ratio_liquid_fish0 <- log(dat$Ratio_liquid_fish_0 + 1)

full_model_org_units0 <- run_model(dat, ~-1 + Cooking_Category + Temperature_in_Celsius +
    Length_cooking_time_in_s + PFAS_carbon_chain + log_Ratio_liquid_fish0)



# Data subset only containing the data with the dry cooking method. Here, only
# the cooking time was added because the liquid ratio, cooking temperature, and
# PFAS carbon chain length do not have sufficient variability.

dat_dry <- filter(dat, Cooking_Category == "No liquid")
full_model_org_units_dry <- run_model(dat_dry, ~Length_cooking_time_in_s)


save(full_model_org_units, full_model_org_units_dry, full_model_org_units0, full_model_org_units_oil_water,
    file = here("Rdata", "full_models_org_units.RData"))

Overall marginalised mean

Overall mean with Ratio_liquid_fish taken as 0 for the dry cooking category

res0<-mod_results(model = full_model_org_units0, data=dat, group="Study_ID",mod="1") 
res0$mod_table
##      name   estimate   lowerCL    upperCL   lowerPR upperPR
## 1 Intrcpt -0.9901905 -1.556167 -0.4242139 -3.069671 1.08929
orchard_plot(res0, mod="1", group= "Study_ID", xlab="lnRR", data=dat, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Overall mean with Ratio_liquid_fish taken as NA for the dry cooking category

res<-mod_results(model = full_model_org_units, data=dat, group="Study_ID", mod="1") 
res$mod_table
##      name   estimate   lowerCL    upperCL   lowerPR  upperPR
## 1 Intrcpt -0.7973281 -1.353966 -0.2406905 -2.896781 1.302125
orchard_plot(res, mod="1", group= "Study_ID", xlab="lnRR", data=dat, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Marginal means for different cooking categories

Overall mean for the water- and oil-based cooking

res_cat<-mod_results(full_model_org_units, data = dat, mod = "1", group="Study_ID",by = "Cooking_Category")
res_cat$mod_table
##      name   condition   estimate   lowerCL    upperCL   lowerPR  upperPR
## 1 Intrcpt   oil-based -0.7562916 -1.320986 -0.1915969 -2.857895 1.345312
## 2 Intrcpt water-based -0.8865230 -1.486962 -0.2860837 -2.998012 1.224966
orchard_plot(res_cat, mod="1", condition.lab="Cooking Category", group= "Study_ID", xlab="lnRR", data=dat, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Overall mean for the dry cooking

res_dry<-mod_results(full_model_org_units_dry, data = dat_dry, group="Study_ID", mod = "1")
res_dry$mod_table
##      name   estimate   lowerCL    upperCL   lowerPR     upperPR
## 1 Intrcpt -0.7902119 -1.193101 -0.3873229 -1.542195 -0.03822837
orchard_plot(res_dry, mod="1", group= "Study_ID", xlab="lnRR", data=dat_dry, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Marginal means for pre-determined cooking times

Here, we generate estimates at cooking times of 2, 10, and 25 min.

Marginal means for pre-determined cooking times, with Ratio_liquid_fish taken as 0 for the dry cooking category

res_cooking_time0 <-mod_results(full_model_org_units0, data = dat, mod = "1", group="Study_ID",at = list(Length_cooking_time_in_s = c(120,600,1500)), by = "Length_cooking_time_in_s")
res_cooking_time0$mod_table
##      name condition   estimate    lowerCL    upperCL   lowerPR   upperPR
## 1 Intrcpt       120 -0.1983672 -0.7807464  0.3840120 -2.282371 1.8856370
## 2 Intrcpt       600 -0.8124488 -1.3754870 -0.2494106 -2.891131 1.2662335
## 3 Intrcpt      1500 -1.9638518 -2.6088373 -1.3188663 -4.066211 0.1385075
orchard_plot(res_cooking_time0, mod="1", condition.lab="Cooking time (sec)", group= "Study_ID", xlab="lnRR", data=dat, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Marginal means for pre-determined cooking times, with Ratio_liquid_fish taken as NA for the dry cooking category

res_cooking_time <-mod_results(full_model_org_units, data = dat, mod = "1", group="Study_ID",at = list(Length_cooking_time_in_s = c(120,600,1500)), by = "Length_cooking_time_in_s")
res_cooking_time$mod_table
##      name condition   estimate    lowerCL    upperCL   lowerPR   upperPR
## 1 Intrcpt       120 -0.1164802 -0.7011029  0.4681425 -2.223526 1.9905653
## 2 Intrcpt       600 -0.6611585 -1.2161311 -0.1061859 -2.760170 1.4378535
## 3 Intrcpt      1500 -1.6824303 -2.3322614 -1.0325992 -3.808492 0.4436311
orchard_plot(res_cooking_time, mod="1", condition.lab="Cooking time (sec)", group= "Study_ID", xlab="lnRR", data=dat, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Marginalised means for the water- and oil-based cooking categories

res_cooking_time_cat <-mod_results(full_model_org_units, data = dat, mod = "Cooking_Category", group="Study_ID",at = list(Length_cooking_time_in_s = c(120,600,1500)), by = "Length_cooking_time_in_s")
res_cooking_time_cat$mod_table
##          name condition    estimate    lowerCL     upperCL   lowerPR   upperPR
## 1   Oil-based       120 -0.07544371 -0.6710478  0.52016034 -2.185562 2.0346750
## 2 Water-based       120 -0.20567515 -0.8252984  0.41394812 -2.322699 1.9113487
## 3   Oil-based       600 -0.62012201 -1.1838724 -0.05637162 -2.721472 1.4812279
## 4 Water-based       600 -0.75035346 -1.3478232 -0.15288372 -2.861000 1.3602926
## 5   Oil-based      1500 -1.64139383 -2.2942428 -0.98854484 -3.768380 0.4855920
## 6 Water-based      1500 -1.77162528 -2.4673659 -1.07588460 -3.912165 0.3689148
orchard_plot(res_cooking_time_cat, mod="1", condition.lab="Cooking time (sec)", group= "Study_ID", xlab="lnRR", data=dat, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Marginalised means for the dry cooking category

res_cooking_time_dry <-mod_results(full_model_org_units_dry, data = dat_dry, group="Study_ID",at = list(Length_cooking_time_in_s = c(120,600,1500)), by = "Length_cooking_time_in_s")
res_cooking_time_dry$mod_table
##      name condition   estimate    lowerCL    upperCL    lowerPR    upperPR
## 1 Intrcpt       120  0.3152385 -0.2249497  0.8554266 -0.5184059  1.1488828
## 2 Intrcpt       600 -0.3706515 -0.7962774  0.0549744 -1.1350579  0.3937549
## 3 Intrcpt      1500 -1.6566952 -2.1473771 -1.1660133 -2.4591467 -0.8542437
orchard_plot(res_cooking_time_dry, mod="1", condition.lab="Cooking time (sec)", group= "Study_ID", xlab="lnRR", data=dat_dry, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left", k.pos="left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Marginal means for different volumes of liquid

Ratio_liquid_fish taken as NA for the dry cooking category

Here, we generate marginalised estimates at volumes of liquid of ~0.1mL/g of tissue, ~10 ml/g of tissue, or 45 mL/g of tissue. We did not look at the means for different cooking categories because they are inherently different in the volume of liquid used. We also only used the data on oil and water because the “No liquid” category is not relevant for this analysis when considering Ratio_liquid_fish as NA.

res_volume<-mod_results(full_model_org_units_oil_water, data = dat_oil_water, mod = "1", group="Study_ID",at = list(log_Ratio_liquid_fish = c(log(0.1), log(10), log(45))), by = "log_Ratio_liquid_fish")
res_volume$mod_table
##      name condition    estimate    lowerCL    upperCL   lowerPR   upperPR
## 1 Intrcpt -2.302585 -0.09956816 -0.7147303  0.5155939 -2.215291 2.0161542
## 2 Intrcpt  2.302585 -1.27359673 -1.8695250 -0.6776685 -3.383807 0.8366135
## 3 Intrcpt  3.806662 -1.65704181 -2.3247881 -0.9892956 -3.788647 0.4745637
orchard_plot(res_volume, mod="1", condition.lab="ln(Liquid volume to tissue sample ratio) (mL/g)", group= "Study_ID", xlab="lnRR", data=dat_oil_water, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 12),
                 legend.text = element_text(size = 10))

Ratio_liquid_fish taken as 0 for the dry cooking category

Here, we generate marginalised estimates at volumes of liquid of 0mL/g of tissue (dry cooking), ~10 ml/g of tissue, or 45 mL/g of tissue.

res_volume0 <- mod_results(full_model_org_units0, data = dat, mod = "1", group="Study_ID",at = list(log_Ratio_liquid_fish0 = c(0, log(10 + 1), log(45 + 1))), by = "log_Ratio_liquid_fish0")
res_volume0$mod_table
##      name condition    estimate    lowerCL    upperCL   lowerPR     upperPR
## 1 Intrcpt  0.000000 -0.09267475 -0.6981902  0.5128407 -2.183263  1.99791300
## 2 Intrcpt  2.397895 -1.40207347 -2.0015084 -0.8026386 -3.490908  0.68676123
## 3 Intrcpt  3.828641 -2.18334909 -2.9164402 -1.4502579 -4.314389 -0.05230924
orchard_plot(res_volume0, mod="1", condition.lab="ln(Liquid volume to tissue sample ratio) (mL/g)", group= "Study_ID", xlab="lnRR", data=dat, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 12),
                 legend.text = element_text(size = 10))

Marginal means for different PFAS carbon chains

Overall mean at the mean of each other predictor, with Ratio_liquid_fish taken as 0 for the dry cooking category

res_PFAS0<-mod_results(full_model_org_units0, data = dat, mod = "1", group="Study_ID", at = list(PFAS_carbon_chain= c(3, 6, 12)), by = "PFAS_carbon_chain")
res_PFAS0$mod_table
##      name condition   estimate   lowerCL    upperCL   lowerPR   upperPR
## 1 Intrcpt         3 -1.1531770 -1.857765 -0.4485891 -3.274580 0.9682264
## 2 Intrcpt         6 -1.0709524 -1.676100 -0.4658052 -3.161434 1.0195287
## 3 Intrcpt        12 -0.9065034 -1.505319 -0.3076879 -2.995160 1.1821537
orchard_plot(res_PFAS0, mod="1", condition.lab="PFAS carbon chain", group= "Study_ID", xlab="lnRR", data=dat, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Overall mean at the mean of each other predictor, with Ratio_liquid_fish taken as NA for the dry cooking category

Here, we generate marginalized estimates for PFAS of 3, 6, and 12 carbon chains

res_PFAS<-mod_results(full_model_org_units, data = dat, mod = "1", group="Study_ID",at = list(PFAS_carbon_chain= c(3, 6, 12)), by = "PFAS_carbon_chain")
res_PFAS$mod_table
##      name condition   estimate   lowerCL    upperCL   lowerPR  upperPR
## 1 Intrcpt         3 -0.9570424 -1.650058 -0.2640265 -3.096698 1.182614
## 2 Intrcpt         6 -0.8780085 -1.472976 -0.2830409 -2.987948 1.231931
## 3 Intrcpt        12 -0.7199407 -1.309841 -0.1300409 -2.828456 1.388575
orchard_plot(res_PFAS, mod="1", condition.lab="PFAS carbon chain", group= "Study_ID", xlab="lnRR", data=dat, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Marginalised mean estimate for the water- and oil-based cooking categories

res_PFAS_cat<-mod_results(full_model_org_units, data = dat, mod = "Cooking_Category", group="Study_ID", at = list(PFAS_carbon_chain= c(3, 6, 12)), by = "PFAS_carbon_chain")
res_PFAS_cat$mod_table
##          name condition   estimate   lowerCL     upperCL   lowerPR  upperPR
## 1   Oil-based         3 -0.9160059 -1.615262 -0.21674972 -3.057691 1.225679
## 2 Water-based         3 -1.0462374 -1.775419 -0.31705550 -3.197879 1.105405
## 3   Oil-based         6 -0.8369720 -1.439339 -0.23460491 -2.949010 1.275066
## 4 Water-based         6 -0.9672035 -1.603638 -0.33076892 -3.089209 1.154802
## 5   Oil-based        12 -0.6789042 -1.276553 -0.08125509 -2.789601 1.431793
## 6 Water-based        12 -0.8091357 -1.440245 -0.17802640 -2.929550 1.311278
orchard_plot(res_PFAS_cat, mod="1", condition.lab="PFAS carbon chain", group= "Study_ID", xlab="lnRR", data=dat, alpha=0.4, trunk.size = 9, branch.size = 2, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 7))+ # change point scaling
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 15),
                 legend.text = element_text(size = 13))

Sub-group analyses for each cooking category

Here, we investigated whether the effect of the continuous moderators on lnRR vary depending on the cooking category. Hence, we performed subset analyses for each cooking category.

Oil-based cooking

Filter data

oil_dat <- filter(dat, Cooking_Category == "oil-based")

Full model, with Ratio_liquid_fish taken as 0 for the dry cooking category

full_model_oil0 <- run_model(oil_dat, ~scale(Temperature_in_Celsius) + scale(Length_cooking_time_in_s) +
    scale(PFAS_carbon_chain) + scale(log(Ratio_liquid_fish_0 + 1)))

summary(full_model_oil0)
## 
## Multivariate Meta-Analysis Model (k = 263; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -174.9150   349.8301   367.8301   399.8067   368.5559   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.1110  0.3331      6     no        Study_ID 
## sigma^2.2  0.0225  0.1501     19     no  Species_common 
## sigma^2.3  0.0510  0.2257     16     no       PFAS_type 
## sigma^2.4  0.1287  0.3587    263     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 258) = 1001.2025, p-val < .0001
## 
## Test of Moderators (coefficients 2:5):
## F(df1 = 4, df2 = 258) = 18.4866, p-val < .0001
## 
## Model Results:
## 
##                                      estimate      se     tval   df    pval 
## intrcpt                               -0.5811  0.1787  -3.2522  258  0.0013 
## scale(Temperature_in_Celsius)         -0.0158  0.0786  -0.2014  258  0.8406 
## scale(Length_cooking_time_in_s)       -0.3791  0.0465  -8.1479  258  <.0001 
## scale(PFAS_carbon_chain)               0.1287  0.0621   2.0737  258  0.0391 
## scale(log(Ratio_liquid_fish_0 + 1))   -0.3162  0.1809  -1.7485  258  0.0816 
##                                        ci.lb    ci.ub 
## intrcpt                              -0.9329  -0.2292   ** 
## scale(Temperature_in_Celsius)        -0.1706   0.1390      
## scale(Length_cooking_time_in_s)      -0.4708  -0.2875  *** 
## scale(PFAS_carbon_chain)              0.0065   0.2509    * 
## scale(log(Ratio_liquid_fish_0 + 1))  -0.6724   0.0399    . 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(full_model_oil0)
##    R2_marginal R2_conditional 
##      0.5608854      0.8195486
save(full_model_oil0, file = here("Rdata", "full_model_oil0.RData"))

Full model, with Ratio_liquid_fish taken as NA for the dry cooking category

full_model_oil <- run_model(oil_dat, ~scale(Temperature_in_Celsius) + scale(Length_cooking_time_in_s) +
    scale(PFAS_carbon_chain) + scale(log(Ratio_liquid_fish)))

summary(full_model_oil)
## 
## Multivariate Meta-Analysis Model (k = 263; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -176.0353   352.0705   370.0705   402.0472   370.7964   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.1147  0.3387      6     no        Study_ID 
## sigma^2.2  0.0252  0.1586     19     no  Species_common 
## sigma^2.3  0.0485  0.2203     16     no       PFAS_type 
## sigma^2.4  0.1293  0.3596    263     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 258) = 1004.5329, p-val < .0001
## 
## Test of Moderators (coefficients 2:5):
## F(df1 = 4, df2 = 258) = 17.9276, p-val < .0001
## 
## Model Results:
## 
##                                  estimate      se     tval   df    pval 
## intrcpt                           -0.5750  0.1811  -3.1747  258  0.0017 
## scale(Temperature_in_Celsius)     -0.0869  0.1173  -0.7409  258  0.4594 
## scale(Length_cooking_time_in_s)   -0.3782  0.0468  -8.0905  258  <.0001 
## scale(PFAS_carbon_chain)           0.1283  0.0613   2.0921  258  0.0374 
## scale(log(Ratio_liquid_fish))     -0.2049  0.2022  -1.0137  258  0.3117 
##                                    ci.lb    ci.ub 
## intrcpt                          -0.9316  -0.2183   ** 
## scale(Temperature_in_Celsius)    -0.3179   0.1441      
## scale(Length_cooking_time_in_s)  -0.4703  -0.2862  *** 
## scale(PFAS_carbon_chain)          0.0075   0.2491    * 
## scale(log(Ratio_liquid_fish))    -0.6030   0.1932      
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(full_model_oil)
##    R2_marginal R2_conditional 
##      0.4422561      0.7730136
save(full_model_oil, file = here("Rdata", "full_model_oil.RData"))

Water-based cooking

Filter data

water_dat <- filter(dat, Cooking_Category == "water-based")

Full model, with Ratio_liquid_fish taken as 0 for the dry cooking category

full_model_water0 <- run_model(water_dat, ~scale(Length_cooking_time_in_s) + scale(PFAS_carbon_chain) +
    scale(log(Ratio_liquid_fish_0 + 1)))

summary(full_model_water0)
## 
## Multivariate Meta-Analysis Model (k = 121; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -178.5919   357.1837   373.1837   395.2811   374.5171   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.5836  0.7640      6     no        Study_ID 
## sigma^2.2  0.0000  0.0001     19     no  Species_common 
## sigma^2.3  0.5469  0.7396     15     no       PFAS_type 
## sigma^2.4  0.9339  0.9664    121     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 117) = 4081.7044, p-val < .0001
## 
## Test of Moderators (coefficients 2:4):
## F(df1 = 3, df2 = 117) = 4.1187, p-val = 0.0081
## 
## Model Results:
## 
##                                      estimate      se     tval   df    pval 
## intrcpt                               -1.3207  0.4140  -3.1905  117  0.0018 
## scale(Length_cooking_time_in_s)       -0.3681  0.1578  -2.3331  117  0.0214 
## scale(PFAS_carbon_chain)              -0.0497  0.1817  -0.2737  117  0.7848 
## scale(log(Ratio_liquid_fish_0 + 1))   -0.6340  0.2484  -2.5521  117  0.0120 
##                                        ci.lb    ci.ub 
## intrcpt                              -2.1406  -0.5009  ** 
## scale(Length_cooking_time_in_s)      -0.6806  -0.0556   * 
## scale(PFAS_carbon_chain)             -0.4096   0.3102     
## scale(log(Ratio_liquid_fish_0 + 1))  -1.1259  -0.1420   * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(full_model_water0)
##    R2_marginal R2_conditional 
##      0.2073497      0.6414238

Full model, with Ratio_liquid_fish taken as NA for the dry cooking category

full_model_water <- run_model(water_dat, ~scale(Length_cooking_time_in_s) + scale(PFAS_carbon_chain) +
    scale(log(Ratio_liquid_fish)))

summary(full_model_water)
## 
## Multivariate Meta-Analysis Model (k = 121; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -178.5993   357.1986   373.1986   395.2960   374.5319   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.5919  0.7693      6     no        Study_ID 
## sigma^2.2  0.0000  0.0001     19     no  Species_common 
## sigma^2.3  0.5456  0.7386     15     no       PFAS_type 
## sigma^2.4  0.9342  0.9666    121     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 117) = 4082.8198, p-val < .0001
## 
## Test of Moderators (coefficients 2:4):
## F(df1 = 3, df2 = 117) = 4.0885, p-val = 0.0084
## 
## Model Results:
## 
##                                  estimate      se     tval   df    pval 
## intrcpt                           -1.3267  0.4164  -3.1862  117  0.0018 
## scale(Length_cooking_time_in_s)   -0.3729  0.1580  -2.3607  117  0.0199 
## scale(PFAS_carbon_chain)          -0.0493  0.1816  -0.2716  117  0.7864 
## scale(log(Ratio_liquid_fish))     -0.6466  0.2552  -2.5337  117  0.0126 
##                                    ci.lb    ci.ub 
## intrcpt                          -2.1514  -0.5021  ** 
## scale(Length_cooking_time_in_s)  -0.6858  -0.0601   * 
## scale(PFAS_carbon_chain)         -0.4090   0.3103     
## scale(log(Ratio_liquid_fish))    -1.1520  -0.1412   * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(full_model_water)
##    R2_marginal R2_conditional 
##      0.2112076      0.6442884

Comparison between steaming and other water-based cooking categories

In our data set, the studies using steaming-based cooking were considered to have an unknown (i.e. NA) because of the difficulty to assess how much liquid gets in contact with the products. Here, we provide an analysis to compare steaming with other water-based cooking categories

water_dat$steamed<-ifelse(water_dat$Cooking_method=="Steaming","steamed","other") # create a dummy variable to differentiate "steaming" with other types of water-based cooking

full_model_water_steamed <- run_model(water_dat, ~ -1 + # without intercept
                                                steamed +
                                                scale(Length_cooking_time_in_s) +
                                                scale(PFAS_carbon_chain)) # In this case, we need to remove the Ratio liquid fish from the model. Otherwise, it would remove observations where the liquid volume was unknown. 

summary(full_model_water_steamed)
## 
## Multivariate Meta-Analysis Model (k = 140; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -210.4827   420.9654   436.9654   460.2666   438.0992   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.6898  0.8305      8     no        Study_ID 
## sigma^2.2  0.0495  0.2225     23     no  Species_common 
## sigma^2.3  0.2682  0.5179     15     no       PFAS_type 
## sigma^2.4  0.9794  0.9896    140     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 136) = 4581.2864, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 136) = 1.8935, p-val = 0.1151
## 
## Model Results:
## 
##                                  estimate      se     tval   df    pval 
## steamedother                      -0.7274  0.3850  -1.8894  136  0.0610 
## steamedsteamed                    -0.5600  0.4478  -1.2504  136  0.2133 
## scale(Length_cooking_time_in_s)   -0.3054  0.1591  -1.9201  136  0.0569 
## scale(PFAS_carbon_chain)          -0.0540  0.1413  -0.3818  136  0.7032 
##                                    ci.lb   ci.ub 
## steamedother                     -1.4886  0.0339  . 
## steamedsteamed                   -1.4456  0.3257    
## scale(Length_cooking_time_in_s)  -0.6200  0.0091  . 
## scale(PFAS_carbon_chain)         -0.3335  0.2255    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Contrast between steamed and non-steamed
full_model_water_steamed_cont <- run_model(water_dat,  
                                             ~  steamed + # with intercept
                                                scale(Length_cooking_time_in_s) +
                                                scale(PFAS_carbon_chain)) 

summary(full_model_water_steamed_cont)
## 
## Multivariate Meta-Analysis Model (k = 140; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -210.4827   420.9654   436.9654   460.2666   438.0992   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.6898  0.8305      8     no        Study_ID 
## sigma^2.2  0.0495  0.2225     23     no  Species_common 
## sigma^2.3  0.2682  0.5179     15     no       PFAS_type 
## sigma^2.4  0.9794  0.9896    140     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 136) = 4581.2864, p-val < .0001
## 
## Test of Moderators (coefficients 2:4):
## F(df1 = 3, df2 = 136) = 1.3449, p-val = 0.2625
## 
## Model Results:
## 
##                                  estimate      se     tval   df    pval 
## intrcpt                           -0.7274  0.3850  -1.8894  136  0.0610 
## steamedsteamed                     0.1674  0.4028   0.4156  136  0.6783 
## scale(Length_cooking_time_in_s)   -0.3054  0.1591  -1.9201  136  0.0569 
## scale(PFAS_carbon_chain)          -0.0540  0.1413  -0.3818  136  0.7032 
##                                    ci.lb   ci.ub 
## intrcpt                          -1.4886  0.0339  . 
## steamedsteamed                   -0.6291  0.9639    
## scale(Length_cooking_time_in_s)  -0.6200  0.0091  . 
## scale(PFAS_carbon_chain)         -0.3335  0.2255    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
save(full_model_water, full_model_water_steamed, full_model_water_steamed_cont, file = here("Rdata", "full_model_water.RData"))

Dry cooking

Filter data

dry_dat <- filter(dat, Cooking_Category == "No liquid")

Full model

full_model_dry <- run_model(dry_dat, ~scale(Length_cooking_time_in_s))

summary(full_model_dry)
## 
## Multivariate Meta-Analysis Model (k = 47; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -11.4570   22.9140   32.9140   41.9474   34.4525   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.0000  0.0000      1    yes        Study_ID 
## sigma^2.2  0.0026  0.0513      8     no  Species_common 
## sigma^2.3  0.0731  0.2703      2     no       PFAS_type 
## sigma^2.4  0.0237  0.1540     47     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 45) = 99.2634, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 45) = 38.5197, p-val < .0001
## 
## Model Results:
## 
##                                  estimate      se     tval  df    pval    ci.lb 
## intrcpt                           -0.7902  0.2000  -3.9504  45  0.0003  -1.1931 
## scale(Length_cooking_time_in_s)   -0.3518  0.0567  -6.2064  45  <.0001  -0.4660 
##                                    ci.ub 
## intrcpt                          -0.3873  *** 
## scale(Length_cooking_time_in_s)  -0.2376  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(full_model_dry)
##    R2_marginal R2_conditional 
##      0.5546179      0.8937802
save(full_model_dry, file = here("Rdata", "full_model_dry.RData"))

Publication bias

Funnel plot

Funnel plot with Ratio_liquid_fish taken as 0 for the dry cooking category

funnel(full_model0, yaxis = "seinv")

funnel(full_model0)

Funnel plot with Ratio_liquid_fish taken as NA for the dry cooking category

funnel(full_model, yaxis = "seinv")

funnel(full_model)

Egger regressions

Full model with Ratio_liquid_fish taken as 0 for the dry cooking category

egger_all0 <- run_model(dat, ~-1 + Cooking_Category + I(sqrt(1/N_tilde)) + scale(Publication_year) +
    scale(Temperature_in_Celsius) + scale(Length_cooking_time_in_s) + scale(PFAS_carbon_chain) +
    scale(log(Ratio_liquid_fish_0 + 1)))
summary(egger_all0)
## 
## Multivariate Meta-Analysis Model (k = 431; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -450.0464   900.0928   926.0928   978.6779   926.9850   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.1184  0.3441      7     no        Study_ID 
## sigma^2.2  0.1679  0.4098     26     no  Species_common 
## sigma^2.3  0.1407  0.3751     17     no       PFAS_type 
## sigma^2.4  0.3592  0.5993    431     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 422) = 5069.2680, p-val < .0001
## 
## Test of Moderators (coefficients 1:9):
## F(df1 = 9, df2 = 422) = 11.0529, p-val < .0001
## 
## Model Results:
## 
##                                      estimate      se     tval   df    pval 
## Cooking_CategoryNo liquid             -2.3292  0.4540  -5.1309  422  <.0001 
## Cooking_Categoryoil-based             -0.7171  0.3927  -1.8261  422  0.0685 
## Cooking_Categorywater-based           -0.4585  0.4049  -1.1324  422  0.2581 
## I(sqrt(1/N_tilde))                     0.0360  0.6060   0.0595  422  0.9526 
## scale(Publication_year)                0.3541  0.1260   2.8111  422  0.0052 
## scale(Temperature_in_Celsius)          0.0081  0.0966   0.0842  422  0.9329 
## scale(Length_cooking_time_in_s)       -0.3681  0.0490  -7.5162  422  <.0001 
## scale(PFAS_carbon_chain)               0.0746  0.0820   0.9099  422  0.3634 
## scale(log(Ratio_liquid_fish_0 + 1))   -0.8370  0.1353  -6.1864  422  <.0001 
##                                        ci.lb    ci.ub 
## Cooking_CategoryNo liquid            -3.2215  -1.4369  *** 
## Cooking_Categoryoil-based            -1.4889   0.0548    . 
## Cooking_Categorywater-based          -1.2545   0.3374      
## I(sqrt(1/N_tilde))                   -1.1551   1.2272      
## scale(Publication_year)               0.1065   0.6017   ** 
## scale(Temperature_in_Celsius)        -0.1817   0.1980      
## scale(Length_cooking_time_in_s)      -0.4644  -0.2719  *** 
## scale(PFAS_carbon_chain)             -0.0866   0.2359      
## scale(log(Ratio_liquid_fish_0 + 1))  -1.1029  -0.5710  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Full model with Ratio_liquid_fish taken as NA for the dry cooking category

egger_all <- run_model(dat, ~-1 + Cooking_Category + I(sqrt(1/N_tilde)) + scale(Publication_year) +
    scale(Temperature_in_Celsius) + scale(Length_cooking_time_in_s) + scale(PFAS_carbon_chain) +
    scale(log(Ratio_liquid_fish)))
summary(egger_all)
## 
## Multivariate Meta-Analysis Model (k = 384; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -423.3298   846.6596   870.6596   917.8147   871.5191   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.0213  0.1459      7     no        Study_ID 
## sigma^2.2  0.1700  0.4124     26     no  Species_common 
## sigma^2.3  0.1249  0.3534     17     no       PFAS_type 
## sigma^2.4  0.4096  0.6400    384     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 376) = 4938.5713, p-val < .0001
## 
## Test of Moderators (coefficients 1:8):
## F(df1 = 8, df2 = 376) = 14.1757, p-val < .0001
## 
## Model Results:
## 
##                                  estimate      se     tval   df    pval 
## Cooking_Categoryoil-based         -0.7006  0.3739  -1.8738  376  0.0617 
## Cooking_Categorywater-based       -0.8498  0.3738  -2.2736  376  0.0236 
## I(sqrt(1/N_tilde))                 0.1514  0.6070   0.2493  376  0.8032 
## scale(Publication_year)            0.4248  0.0896   4.7434  376  <.0001 
## scale(Temperature_in_Celsius)     -0.3518  0.1228  -2.8652  376  0.0044 
## scale(Length_cooking_time_in_s)   -0.3322  0.0534  -6.2229  376  <.0001 
## scale(PFAS_carbon_chain)           0.0808  0.0802   1.0075  376  0.3143 
## scale(log(Ratio_liquid_fish))     -0.9162  0.1490  -6.1491  376  <.0001 
##                                    ci.lb    ci.ub 
## Cooking_Categoryoil-based        -1.4359   0.0346    . 
## Cooking_Categorywater-based      -1.5847  -0.1149    * 
## I(sqrt(1/N_tilde))               -1.0422   1.3449      
## scale(Publication_year)           0.2487   0.6009  *** 
## scale(Temperature_in_Celsius)    -0.5932  -0.1104   ** 
## scale(Length_cooking_time_in_s)  -0.4371  -0.2272  *** 
## scale(PFAS_carbon_chain)         -0.0769   0.2385      
## scale(log(Ratio_liquid_fish))    -1.2092  -0.6232  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
egger_n <- run_model(dat, ~I(sqrt(1/N_tilde)))
summary(egger_n)
## 
## Multivariate Meta-Analysis Model (k = 512; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -620.6237  1241.2474  1253.2474  1278.6539  1253.4144   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.5898  0.7680     10     no        Study_ID 
## sigma^2.2  0.1814  0.4259     39     no  Species_common 
## sigma^2.3  0.0982  0.3134     18     no       PFAS_type 
## sigma^2.4  0.4790  0.6921    512     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 510) = 7467.4550, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 510) = 0.0075, p-val = 0.9310
## 
## Model Results:
## 
##                     estimate      se     tval   df    pval    ci.lb   ci.ub 
## intrcpt              -0.3621  0.4112  -0.8805  510  0.3790  -1.1700  0.4458    
## I(sqrt(1/N_tilde))    0.0521  0.6014   0.0866  510  0.9310  -1.1295  1.2336    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
save(egger_all, egger_all0, egger_n, file = here("Rdata", "egger_regressions.RData"))

Publication year

pub_year <- run_model(dat, ~Publication_year)
summary(pub_year)
## 
## Multivariate Meta-Analysis Model (k = 512; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -619.0233  1238.0465  1250.0465  1275.4530  1250.2135   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.5626  0.7500     10     no        Study_ID 
## sigma^2.2  0.1763  0.4199     39     no  Species_common 
## sigma^2.3  0.0987  0.3142     18     no       PFAS_type 
## sigma^2.4  0.4788  0.6920    512     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 510) = 7432.5901, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 510) = 1.3008, p-val = 0.2546
## 
## Model Results:
## 
##                    estimate        se     tval   df    pval      ci.lb 
## intrcpt           -165.5866  144.8912  -1.1428  510  0.2536  -450.2436 
## Publication_year     0.0819    0.0718   1.1405  510  0.2546    -0.0592 
##                      ci.ub 
## intrcpt           119.0704    
## Publication_year    0.2231    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot_continuous(dat, pub_year, dat$Publication_year, "Publication year")

##

Sensitivity analyses

Leave-one-out analyses

Here, we iteratively removed one study at the time and investigated how it affects the overall mean. Removing one specific study particularly modifies the estimate, but none of these models show a significant overall difference in PFAS concentration with cooking.

dat$Study_ID<-as.factor(dat$Study_ID)
dat<-as.data.frame(dat) # Only work with a dataframe
VCV_matrix<-list() # will need new VCV matrices because the sample size will be iteratively reduced
Leave1studyout<-list() # create a list that will host the results of each model 
for(i in 1:length(levels(dat$Study_ID))){ # N models = N studies 
  VCV_matrix[[i]]<-make_VCV_matrix(dat[dat$Study_ID != levels(dat$Study_ID)[i], ], V="var_lnRR", cluster="Cohort_ID", obs="Effect_ID") # Create a new VCV matrix for each new model
  Leave1studyout[[i]] <- rma.mv(yi = lnRR, V = VCV_matrix[[i]], # Same model structure as all the models we fitted
                                random = list(~1|Study_ID,
                                              ~1|Species_common, 
                                              ~1|PFAS_type, 
                                              ~1|Effect_ID),
                                test = "t", 
                                data = dat[dat$Study_ID != levels(dat$Study_ID)[i], ]) # Generate a new model for each new data (iterative removal of one study at a time)
}

# The output is a list so we need to summarise the coefficients of all the models performed

results.Leave1studyout<-as.data.frame(cbind(
                                           sapply(Leave1studyout, function(x) summary(x)$beta), # extract the beta coefficient from all models
                                           sapply(Leave1studyout, function(x) summary(x)$se), # extract the standard error from all models
                                           sapply(Leave1studyout, function(x) summary(x)$zval),  # extract the z value from all models
                                           sapply(Leave1studyout, function(x) summary(x)$pval), # extract the p value from all models
                                           sapply(Leave1studyout, function(x) summary(x)$ci.lb), # extract the lower confidence interval for all models
                                           sapply(Leave1studyout, function(x) summary(x)$ci.ub))) # extract the upper confidence interval for all models

colnames(results.Leave1studyout)=c("Estimate", "SE", "zval", "pval", "ci.lb", "ci.ub") # change column names 
kable(results.Leave1studyout)%>% kable_styling("striped", position="left") %>% scroll_box(width="100%", height="500px") # Table of the results from all models
Estimate SE zval pval ci.lb ci.ub
-0.3458077 0.3029849 -1.1413364 0.2542666 -0.9410625 0.2494472
-0.4196589 0.3047387 -1.3771106 0.1690918 -1.0183792 0.1790615
-0.4439445 0.3304790 -1.3433365 0.1799605 -1.0937301 0.2058412
-0.0668046 0.2192848 -0.3046476 0.7607652 -0.4976701 0.3640610
-0.3500494 0.3088332 -1.1334577 0.2575891 -0.9568847 0.2567859
-0.2580536 0.2968634 -0.8692672 0.3851292 -0.8413447 0.3252375
-0.3540688 0.3068927 -1.1537216 0.2491677 -0.9570329 0.2488953
-0.2354278 0.3041720 -0.7739955 0.4395067 -0.8338645 0.3630089
-0.4143421 0.3063917 -1.3523283 0.1769044 -1.0163704 0.1876862
-0.4923245 0.2847184 -1.7291627 0.0844582 -1.0518506 0.0672017
dat %>% group_by(Author_year, Study_ID) %>% summarise(mean=mean(lnRR)) # Study F005 (DelGobbo_2008) has much lower effect sizes than the others. 
## # A tibble: 10 x 3
## # Groups:   Author_year [10]
##    Author_year      Study_ID    mean
##    <chr>            <fct>      <dbl>
##  1 Alves_2017       F001     -0.0774
##  2 Barbosa_2018     F002      0.198 
##  3 Bhavsar_2014     F003      0.153 
##  4 DelGobbo_2008    F005     -2.00  
##  5 Hu_2020          F006     -0.134 
##  6 Kim_2020         F007     -0.887 
##  7 Luo_2019         F008     -0.161 
##  8 Sungur_2019      F010     -0.893 
##  9 Taylor_2019      F011      0.214 
## 10 Vassiliadou_2015 F013      0.672

Subset analyses without Study_ID F005 (Del Gobbo et al. 2008)

Cooking time

dat.sens <- filter(dat, Author_year != "DelGobbo_2008")

dat.sens <- as.data.frame(dat.sens)  # convert data set into a data frame to calculate VCV matrix 
VCV_lnRR.sens <- make_VCV_matrix(dat.sens, V = "var_lnRR", cluster = "Cohort_ID",
    obs = "Effect_ID", rho = 0.5)  # create VCV matrix for the specified data

mod.sens <- rma.mv(lnRR, VCV_lnRR.sens, mods = ~Length_cooking_time_in_s, random = list(~1 |
    Study_ID, ~1 | Species_common, ~1 | PFAS_type, ~1 | Effect_ID), test = "t", data = dat.sens)
summary(mod.sens)
## 
## Multivariate Meta-Analysis Model (k = 430; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -262.2763   524.5525   536.5525   560.9073   536.7520   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.2068  0.4547      8     no        Study_ID 
## sigma^2.2  0.0210  0.1449     22     no  Species_common 
## sigma^2.3  0.0950  0.3081     17     no       PFAS_type 
## sigma^2.4  0.0889  0.2981    430     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 428) = 2075.8092, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 428) = 105.2316, p-val < .0001
## 
## Model Results:
## 
##                           estimate      se      tval   df    pval    ci.lb 
## intrcpt                     0.5875  0.2081    2.8223  428  0.0050   0.1783 
## Length_cooking_time_in_s   -0.0012  0.0001  -10.2582  428  <.0001  -0.0014 
##                             ci.ub 
## intrcpt                    0.9966   ** 
## Length_cooking_time_in_s  -0.0009  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
dat.time.sens <- filter(dat.sens, Length_cooking_time_in_s != "NA")
plot_continuous(dat.time.sens, mod.sens, dat.time.sens$Length_cooking_time_in_s,
    "Cooking time (s)")

Predictions from the full model, for each cooking category

oil_dat.sens<-filter(dat.sens, Cooking_Category=="oil-based")

##### Oil based
full_model_oil_time.sens<- run_model(oil_dat.sens, ~ scale(Temperature_in_Celsius) +
                                           Length_cooking_time_in_s+
                                           scale(PFAS_carbon_chain) +
                                           scale(log(Ratio_liquid_fish_0 + 1)))
summary(full_model_oil_time.sens)
## 
## Multivariate Meta-Analysis Model (k = 257; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -101.3633   202.7266   220.7266   252.4914   221.4704   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.0656  0.2561      5     no        Study_ID 
## sigma^2.2  0.0162  0.1274     15     no  Species_common 
## sigma^2.3  0.1154  0.3398     16     no       PFAS_type 
## sigma^2.4  0.0285  0.1687    257     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 252) = 543.8908, p-val < .0001
## 
## Test of Moderators (coefficients 2:5):
## F(df1 = 4, df2 = 252) = 30.9152, p-val < .0001
## 
## Model Results:
## 
##                                      estimate      se      tval   df    pval 
## intrcpt                                0.5252  0.1889    2.7806  252  0.0058 
## scale(Temperature_in_Celsius)         -0.0228  0.0710   -0.3214  252  0.7482 
## Length_cooking_time_in_s              -0.0015  0.0001  -10.2654  252  <.0001 
## scale(PFAS_carbon_chain)               0.1460  0.0739    1.9768  252  0.0492 
## scale(log(Ratio_liquid_fish_0 + 1))   -0.4408  0.1569   -2.8095  252  0.0054 
##                                        ci.lb    ci.ub 
## intrcpt                               0.1532   0.8972   ** 
## scale(Temperature_in_Celsius)        -0.1626   0.1170      
## Length_cooking_time_in_s             -0.0018  -0.0012  *** 
## scale(PFAS_carbon_chain)              0.0005   0.2915    * 
## scale(log(Ratio_liquid_fish_0 + 1))  -0.7498  -0.1318   ** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
pred_oil_time.sens<-predict.rma(full_model_oil_time.sens, addx=TRUE, newmods=cbind(0,oil_dat.sens$Length_cooking_time_in_s, 0, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_oil_time.sens<-as.data.frame(pred_oil_time.sens)
pred_oil_time.sens$Length_cooking_time_in_s=pred_oil_time.sens$X.Length_cooking_time_in_s
pred_oil_time.sens<-left_join(oil_dat.sens, pred_oil_time.sens, by="Length_cooking_time_in_s")


##### Water based
water_dat.sens<-filter(dat.sens, Cooking_Category=="water-based")

full_model_water_time.sens<- run_model(water_dat.sens, ~ scale(Temperature_in_Celsius) +
                                           Length_cooking_time_in_s+
                                           scale(PFAS_carbon_chain) +
                                           scale(log(Ratio_liquid_fish_0 + 1)))

summary(full_model_water_time.sens)
## 
## Multivariate Meta-Analysis Model (k = 101; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -59.6158  119.2315  135.2315  155.8292  136.8679   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.1409  0.3754      5     no        Study_ID 
## sigma^2.2  0.0000  0.0000     13     no  Species_common 
## sigma^2.3  0.1205  0.3472     15     no       PFAS_type 
## sigma^2.4  0.0654  0.2558    101     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 97) = 322.9711, p-val < .0001
## 
## Test of Moderators (coefficients 2:4):
## F(df1 = 3, df2 = 97) = 15.3851, p-val < .0001
## 
## Model Results:
## 
##                                      estimate      se     tval  df    pval 
## intrcpt                                0.3276  0.2725   1.2024  97  0.2321 
## Length_cooking_time_in_s              -0.0013  0.0002  -6.1733  97  <.0001 
## scale(PFAS_carbon_chain)               0.1696  0.0824   2.0589  97  0.0422 
## scale(log(Ratio_liquid_fish_0 + 1))   -0.2591  0.1547  -1.6745  97  0.0972 
##                                        ci.lb    ci.ub 
## intrcpt                              -0.2132   0.8683      
## Length_cooking_time_in_s             -0.0017  -0.0009  *** 
## scale(PFAS_carbon_chain)              0.0061   0.3331    * 
## scale(log(Ratio_liquid_fish_0 + 1))  -0.5662   0.0480    . 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
pred_water_time.sens<-predict.rma(full_model_water_time.sens, addx=TRUE, newmods=cbind(water_dat.sens$Length_cooking_time_in_s, 0, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_water_time.sens<-as.data.frame(pred_water_time.sens)
pred_water_time.sens$Length_cooking_time_in_s=pred_water_time.sens$X.Length_cooking_time_in_s
pred_water_time.sens<-left_join(water_dat, pred_water_time.sens, by="Length_cooking_time_in_s")

##### No liquid 
dry_dat.sens<-filter(dat.sens, Cooking_Category=="No liquid")

full_model_dry_time.sens<- run_model(dry_dat.sens, ~ Length_cooking_time_in_s)

pred_dry_time.sens<-predict.rma(full_model_dry_time.sens, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_dry_time.sens<-as.data.frame(pred_dry_time.sens)
pred_dry_time.sens$Length_cooking_time_in_s=pred_dry_time.sens$X.Length_cooking_time_in_s
pred_dry_time.sens<-left_join(dry_dat.sens, pred_dry_time.sens, by="Length_cooking_time_in_s")




ggplot(dat.sens,aes(x = Length_cooking_time_in_s, y = lnRR, fill=Cooking_Category)) +
  
       geom_ribbon(data=pred_water_time.sens, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_water_time.sens,aes(y = pred), size = 1.5, col="dodgerblue")+  
  
       geom_ribbon(data=pred_oil_time.sens, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.3) +
       geom_line(data=pred_oil_time.sens,aes(y = pred), size = 1.5, col="goldenrod")+  
  
        geom_ribbon(data=pred_dry_time.sens, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_dry_time.sens,aes(y = pred), size = 1.5, col="palegreen3")+  
  
  
       geom_point(aes(size=(1/sqrt(var_lnRR)), fill=Cooking_Category), shape=21, alpha=0.8) +
       scale_fill_manual(values=c("#55C667FF", "goldenrod2", "dodgerblue3"))+
       labs(x = "Cooking time (s)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position=c(0,0), 
          legend.justification = c(0,0),
          legend.background = element_blank(), 
          legend.direction="horizontal",
          legend.title = element_text(size=15), 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Liquid volume to tissue sample ratio

dat.sens.vol0 <- filter(dat.sens, Ratio_liquid_fish_0 != "NA")
VCV_lnRR.sens.vol0 <- make_VCV_matrix(dat.sens.vol0, V = "var_lnRR", cluster = "Cohort_ID",
    obs = "Effect_ID", rho = 0.5)  # create VCV matrix for the specified data


mod.sens.vol0 <- rma.mv(lnRR, VCV_lnRR.sens.vol0, mods = ~log(Ratio_liquid_fish_0 +
    1), random = list(~1 | Study_ID, ~1 | Species_common, ~1 | PFAS_type, ~1 | Effect_ID),
    test = "t", data = dat.sens.vol0)
summary(mod.sens.vol0)
## 
## Multivariate Meta-Analysis Model (k = 467; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -401.1340   802.2679   814.2679   839.1201   814.4513   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.3263  0.5712      7     no        Study_ID 
## sigma^2.2  0.0510  0.2259     27     no  Species_common 
## sigma^2.3  0.1373  0.3706     18     no       PFAS_type 
## sigma^2.4  0.1583  0.3978    467     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 465) = 2238.2075, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 465) = 2.8724, p-val = 0.0908
## 
## Model Results:
## 
##                               estimate      se     tval   df    pval    ci.lb 
## intrcpt                        -0.0976  0.2520  -0.3872  465  0.6988  -0.5928 
## log(Ratio_liquid_fish_0 + 1)   -0.0425  0.0251  -1.6948  465  0.0908  -0.0919 
##                                ci.ub 
## intrcpt                       0.3977    
## log(Ratio_liquid_fish_0 + 1)  0.0068  . 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot_continuous(dat.sens.vol0, mod.sens.vol0, log(dat.sens.vol0$Ratio_liquid_fish_0 +
    1), "ln(Liquid volume to tissue sample ratio + 1) (mL/g)") + scale_fill_manual(values = c("#55C667FF",
    "goldenrod2", "dodgerblue3"))

Predictions from the full model, for each cooking category
##### Oil based
full_model_oil_vol.sens <- run_model(oil_dat.sens, ~scale(Temperature_in_Celsius) +
    scale(Length_cooking_time_in_s) + scale(PFAS_carbon_chain) + log_Ratio_liquid_fish0)
summary(full_model_oil_vol.sens)
## 
## Multivariate Meta-Analysis Model (k = 257; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -101.3633   202.7266   220.7266   252.4914   221.4704   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.0656  0.2561      5     no        Study_ID 
## sigma^2.2  0.0162  0.1274     15     no  Species_common 
## sigma^2.3  0.1154  0.3398     16     no       PFAS_type 
## sigma^2.4  0.0285  0.1687    257     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 252) = 543.8908, p-val < .0001
## 
## Test of Moderators (coefficients 2:5):
## F(df1 = 4, df2 = 252) = 30.9152, p-val < .0001
## 
## Model Results:
## 
##                                  estimate      se      tval   df    pval 
## intrcpt                           -0.1890  0.2225   -0.8496  252  0.3963 
## scale(Temperature_in_Celsius)     -0.0228  0.0710   -0.3214  252  0.7482 
## scale(Length_cooking_time_in_s)   -0.3866  0.0377  -10.2654  252  <.0001 
## scale(PFAS_carbon_chain)           0.1460  0.0739    1.9768  252  0.0492 
## log_Ratio_liquid_fish0            -0.2862  0.1019   -2.8095  252  0.0054 
##                                    ci.lb    ci.ub 
## intrcpt                          -0.6271   0.2491      
## scale(Temperature_in_Celsius)    -0.1626   0.1170      
## scale(Length_cooking_time_in_s)  -0.4608  -0.3124  *** 
## scale(PFAS_carbon_chain)          0.0005   0.2915    * 
## log_Ratio_liquid_fish0           -0.4868  -0.0856   ** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
pred_oil_vol.sens <- predict.rma(full_model_oil_vol.sens, addx = TRUE, newmods = cbind(0,
    0, 0, oil_dat.sens$log_Ratio_liquid_fish0))  # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time

pred_oil_vol.sens <- as.data.frame(pred_oil_vol.sens)
pred_oil_vol.sens <- pred_oil_vol.sens %>%
    mutate(Ratio_liquid_fish_0 = exp(X.log_Ratio_liquid_fish0) - 1, Cooking_Category = "oil-based",
        lnRR = 0)  # for the plot to work, we need to add a column with cooking category and a column with lnRR


##### Water based

full_model_water_vol.sens <- run_model(water_dat.sens, ~scale(Temperature_in_Celsius) +
    scale(Length_cooking_time_in_s) + scale(PFAS_carbon_chain) + log_Ratio_liquid_fish0)

pred_water_vol.sens <- predict.rma(full_model_water_vol.sens, addx = TRUE, newmods = cbind(0,
    0, water_dat.sens$log_Ratio_liquid_fish0))  # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time

pred_water_vol.sens <- as.data.frame(pred_water_vol.sens)
pred_water_vol.sens <- pred_water_vol.sens %>%
    mutate(Ratio_liquid_fish_0 = exp(X.log_Ratio_liquid_fish0) - 1, Cooking_Category = "water-based",
        lnRR = 0)

The code runs, but can’t be knitted for some reason

ggplot(dat.sens, aes(x = log(Ratio_liquid_fish_0 + 1), y = lnRR, fill = Cooking_Category)) +
geom_ribbon(data = pred_water_vol.sens, aes(ymin = ci.lb, ymax = ci.ub, color = NULL),
    alpha = 0.2) + geom_line(data = pred_water_vol.sens, aes(y = pred), size = 1.5,
    col = "dodgerblue") +  col = "dodgerblue") +
geom_ribbon(data = pred_oil_vol.sens, aes(ymin = ci.lb, ymax = ci.ub, color = NULL),
    alpha = 0.3) + geom_line(data = pred_oil_vol.sens, aes(y = pred), size = 1.5,
    col = "goldenrod") +  col = "goldenrod") +

geom_point(aes(size = (1/sqrt(var_lnRR)), fill = Cooking_Category), shape = 21, alpha = 0.8) +
    scale_fill_manual(values = c("#55C667FF", "goldenrod2", "dodgerblue3")) + labs(x = "ln(Liquid/animal tissue ratio + 1) (mL/g)",
    y = "lnRR", size = "Precison (1/SE)") + scale_size_continuous(range = c(1, 10)) +
    theme_bw() + geom_hline(yintercept = 0, linetype = 2, colour = "black", alpha = 0.5) +
    theme(text = element_text(size = 18, colour = "black", hjust = 0.5), legend.text = element_text(size = 14),
        legend.position = "none", panel.border = element_rect(colour = "black", fill = NA,
            size = 1.2))

PFAS carbon chain

dat.sens.PFAS <- filter(dat.sens, PFAS_carbon_chain != "NA")
VCV_lnRR.sens.PFAS <- make_VCV_matrix(dat.sens.PFAS, V = "var_lnRR", cluster = "Cohort_ID",
    obs = "Effect_ID", rho = 0.5)  # create VCV matrix for the specified data


mod.sens.PFAS <- rma.mv(lnRR, VCV_lnRR.sens.PFAS, mods = ~PFAS_carbon_chain, random = list(~1 |
    Study_ID, ~1 | Species_common, ~1 | PFAS_type, ~1 | Effect_ID), test = "t", data = dat.sens.PFAS)
summary(mod.sens.PFAS)
## 
## Multivariate Meta-Analysis Model (k = 486; method: REML)
## 
##    logLik   Deviance        AIC        BIC       AICc 
## -432.7165   865.4329   877.4329   902.5254   877.6090   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed          factor 
## sigma^2.1  0.2942  0.5424      9     no        Study_ID 
## sigma^2.2  0.0772  0.2778     31     no  Species_common 
## sigma^2.3  0.0959  0.3098     18     no       PFAS_type 
## sigma^2.4  0.1860  0.4313    486     no       Effect_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 484) = 3092.1464, p-val < .0001
## 
## Test of Moderators (coefficient 2):
## F(df1 = 1, df2 = 484) = 1.1226, p-val = 0.2899
## 
## Model Results:
## 
##                    estimate      se     tval   df    pval    ci.lb   ci.ub 
## intrcpt             -0.3223  0.3251  -0.9914  484  0.3220  -0.9612  0.3165    
## PFAS_carbon_chain    0.0284  0.0268   1.0595  484  0.2899  -0.0242  0.0809    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot_continuous(dat.sens.PFAS, mod.sens.PFAS, dat.sens.PFAS$PFAS_carbon_chain, "PFAS carbon chain length")  # The relationship with cooking time appears even stronger

Predictions from the full model, for each cooking category
#### Oil based
full_model_oil_PFAS.sens<- run_model(oil_dat.sens, ~ scale(Temperature_in_Celsius) +
                                           scale(Length_cooking_time_in_s)+
                                           PFAS_carbon_chain +
                                           scale(log(Ratio_liquid_fish_0 + 1)))

pred_oil_PFAS.sens<-predict.rma(full_model_oil_PFAS.sens, addx=TRUE, newmods=cbind(0,0, oil_dat.sens$PFAS_carbon_chain,0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of PFAS carbon chain
pred_oil_PFAS.sens<-as.data.frame(pred_oil_PFAS.sens)
pred_oil_PFAS.sens$PFAS_carbon_chain=pred_oil_PFAS.sens$X.PFAS_carbon_chain
pred_oil_PFAS.sens<-left_join(oil_dat.sens, pred_oil_PFAS.sens, by="PFAS_carbon_chain")


##### Water based
full_model_water_PFAS.sens<- run_model(water_dat.sens, ~ scale(Temperature_in_Celsius) +
                                           scale(Length_cooking_time_in_s)+
                                           PFAS_carbon_chain +
                                           scale(log(Ratio_liquid_fish_0 + 1)))

pred_water_PFAS.sens<-predict.rma(full_model_water_PFAS.sens, addx=TRUE, newmods=cbind(0, water_dat.sens$PFAS_carbon_chain,0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_water_PFAS.sens<-as.data.frame(pred_water_PFAS.sens)
pred_water_PFAS.sens$PFAS_carbon_chain=pred_water_PFAS.sens$X.PFAS_carbon_chain
pred_water_PFAS.sens<-left_join(water_dat.sens, pred_water_PFAS.sens, by="PFAS_carbon_chain")

##### No liquid 

full_model_dry_PFAS.sens<- run_model(dry_dat.sens, ~ PFAS_carbon_chain)

pred_dry_PFAS.sens<-predict.rma(full_model_dry_PFAS.sens, addx=TRUE)
pred_dry_PFAS.sens<-as.data.frame(pred_dry_PFAS.sens)
pred_dry_PFAS.sens$PFAS_carbon_chain=pred_dry_PFAS.sens$X.PFAS_carbon_chain
pred_dry_PFAS.sens<-left_join(dry_dat.sens, pred_dry_PFAS.sens, by="PFAS_carbon_chain")



ggplot(dat.sens,aes(x = PFAS_carbon_chain, y = lnRR, fill=Cooking_Category)) +
  
    
       geom_ribbon(data=pred_dry_PFAS.sens, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_dry_PFAS.sens,aes(y = pred), size = 1.5, col="palegreen3")+  
  
  
       geom_ribbon(data=pred_water_PFAS.sens, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_water_PFAS.sens,aes(y = pred), size = 1.5, col="dodgerblue")+  
  
  
       geom_ribbon(data=pred_oil_PFAS.sens, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.3) +
       geom_line(data=pred_oil_PFAS.sens,aes(y = pred), size = 1.5, col="goldenrod")+  
  
  
       geom_point(aes(size=(1/sqrt(var_lnRR)), fill=Cooking_Category), shape=21, alpha=0.8) +
       scale_fill_manual(values=c("#55C667FF", "goldenrod2", "dodgerblue3"))+
       labs(x = "PFAS carbon chain length", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position="none",
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Funnel plot

full_mod.sens <- run_model(dat.sens, ~-1 + Cooking_Category + scale(Temperature_in_Celsius) +
    scale(Length_cooking_time_in_s) + scale(PFAS_carbon_chain) + scale(log(Ratio_liquid_fish_0 +
    1)))


funnel(full_mod.sens, yaxis = "seinv")

Figures for publication

All figures in the publication were generated using estimates from models taking the liquid/animal tissue ratio as “0” for the dry cooking category.

Figure 2

Figure 2A

full_model_time0<- run_model(dat, ~     scale(Temperature_in_Celsius) +
                                       Length_cooking_time_in_s+
                                       scale(PFAS_carbon_chain) +
                                       scale(log(Ratio_liquid_fish_0 + 1)))

pred_full_model_time0<-predict.rma(full_model_time0, addx=TRUE, newmods=cbind(0,dat$Length_cooking_time_in_s, 0, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_full_model_time0<-as.data.frame(pred_full_model_time0)
pred_full_model_time0$Length_cooking_time_in_s=pred_full_model_time0$X.Length_cooking_time_in_s
pred_full_model_time0<-left_join(dat, pred_full_model_time0, by="Length_cooking_time_in_s")



uni_model_time<- run_model(dat, ~ Length_cooking_time_in_s)

pred_uni_model_time<-predict.rma(uni_model_time, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_uni_model_time<-as.data.frame(pred_uni_model_time)
pred_uni_model_time$Length_cooking_time_in_s=pred_uni_model_time$X.Length_cooking_time_in_s
pred_uni_model_time<-left_join(dat, pred_uni_model_time, by="Length_cooking_time_in_s")



p_time0<-ggplot(dat,aes(x = Length_cooking_time_in_s, y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_full_model_time0, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_full_model_time0,aes(y = pred), size = 1.5, color="orangered2")+  
  
       geom_ribbon(data=pred_uni_model_time, aes(ymin = ci.lb, ymax = ci.ub), alpha=0.25, fill="gray40") +
       geom_line(data=pred_uni_model_time,aes(y = pred), size = 1.5, col="gray30")+  
  
       labs(x = "Cooking time (s)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.position="none",
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Figure 2B

full_model_vol0<- run_model(dat, ~     scale(Temperature_in_Celsius) +
                                       scale(Length_cooking_time_in_s)+
                                       scale(PFAS_carbon_chain) +
                                       log_Ratio_liquid_fish0)

pred_full_model_vol0<-predict.rma(full_model_vol0, addx=TRUE, newmods=cbind(0,0, 0, dat$log_Ratio_liquid_fish0))
pred_full_model_vol0<-as.data.frame(pred_full_model_vol0)
pred_full_model_vol0$log_Ratio_liquid_fish0=pred_full_model_vol0$X.log_Ratio_liquid_fish
pred_full_model_vol0<- pred_full_model_vol0 %>% mutate(Ratio_liquid_fish = exp(X.log_Ratio_liquid_fish0)-1, lnRR = 0) 



uni_model_vol0<- run_model(dat, ~ log_Ratio_liquid_fish0)

pred_uni_model_vol0<-predict.rma(uni_model_vol0, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_uni_model_vol0<-as.data.frame(pred_uni_model_vol0)
pred_uni_model_vol0$log_Ratio_liquid_fish0=pred_uni_model_vol0$X.log_Ratio_liquid_fish
pred_uni_model_vol0<- pred_uni_model_vol0 %>% mutate(Ratio_liquid_fish = exp(X.log_Ratio_liquid_fish0) -1, lnRR = 0) 



p_vol0<-ggplot(dat,aes(x = log_Ratio_liquid_fish0, y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_full_model_vol0, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_full_model_vol0,aes(y = pred), size = 1.5, color="orangered2")+  
  
       geom_ribbon(data=pred_uni_model_vol0, aes(ymin = ci.lb, ymax = ci.ub), alpha=0.25, fill="gray40") +
       geom_line(data=pred_uni_model_vol0,aes(y = pred), size = 1.5, col="gray30")+  
  
       labs(x = "ln (Liquid/animal tissue ratio + 1) (mL/g)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.position="none", 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Figure 2C

full_model_temp0<- run_model(dat, ~     Temperature_in_Celsius +
                                       scale(Length_cooking_time_in_s)+
                                       scale(PFAS_carbon_chain) +
                                       scale(log(Ratio_liquid_fish_0 + 1)))

pred_full_model_temp0<-predict.rma(full_model_temp0, addx=TRUE, newmods=cbind(dat$Temperature_in_Celsius,0, 0, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_full_model_temp0<-as.data.frame(pred_full_model_temp0)
pred_full_model_temp0$Temperature_in_Celsius=pred_full_model_temp0$X.Temperature_in_Celsius
pred_full_model_temp0<-left_join(dat, pred_full_model_temp0, by="Temperature_in_Celsius")



uni_model_temp<- run_model(dat, ~ Temperature_in_Celsius)

pred_uni_model_temp<-predict.rma(uni_model_temp, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_uni_model_temp<-as.data.frame(pred_uni_model_temp)
pred_uni_model_temp$Temperature_in_Celsius=pred_uni_model_temp$X.Temperature_in_Celsius
pred_uni_model_temp<-left_join(dat, pred_uni_model_temp, by="Temperature_in_Celsius")



p_temp0<-ggplot(dat,aes(x = Temperature_in_Celsius, y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_full_model_temp0, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_full_model_temp0,aes(y = pred), size = 1.5, color="orangered2")+  
  
       geom_ribbon(data=pred_uni_model_temp, aes(ymin = ci.lb, ymax = ci.ub), alpha=0.25, fill="gray40") +
       geom_line(data=pred_uni_model_temp,aes(y = pred), size = 1.5, col="gray30")+  
  
       labs(x = "Cooking temperature (°C)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position=c(1,0), 
          legend.justification = c(1,0),
          legend.background = element_blank(), 
          legend.direction="vertical",
          legend.title = element_text(size=15), 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Figure 2D

full_model_PFAS0<- run_model(dat, ~     scale(Temperature_in_Celsius) +
                                       scale(Length_cooking_time_in_s)+
                                       PFAS_carbon_chain +
                                       scale(log(Ratio_liquid_fish_0 + 1)))

pred_full_model_PFAS0<-predict.rma(full_model_PFAS0, addx=TRUE, newmods=cbind(0, 0, dat$PFAS_carbon_chain, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_full_model_PFAS0<-as.data.frame(pred_full_model_PFAS0)
pred_full_model_PFAS0$PFAS_carbon_chain=pred_full_model_PFAS0$X.PFAS_carbon_chain
pred_full_model_PFAS0<-left_join(dat, pred_full_model_PFAS0, by="PFAS_carbon_chain")



uni_model_PFAS<- run_model(dat, ~ PFAS_carbon_chain)

pred_uni_model_PFAS<-predict.rma(uni_model_PFAS, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_uni_model_PFAS<-as.data.frame(pred_uni_model_PFAS)
pred_uni_model_PFAS$PFAS_carbon_chain=pred_uni_model_PFAS$X.PFAS_carbon_chain
pred_uni_model_PFAS<-left_join(dat, pred_uni_model_PFAS, by="PFAS_carbon_chain")



p_PFAS0<-ggplot(dat,aes(x = PFAS_carbon_chain, y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_full_model_PFAS0, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_full_model_PFAS0,aes(y = pred), size = 1.5, color="orangered2")+  
  
       geom_ribbon(data=pred_uni_model_PFAS, aes(ymin = ci.lb, ymax = ci.ub), alpha=0.25, fill="gray40") +
       geom_line(data=pred_uni_model_PFAS,aes(y = pred), size = 1.5, col="gray30")+  
  
       labs(x = "PFAS carbon chain length", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.position="none",
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Combine plots and save

(p_time0 + p_vol0)/(p_temp0 + p_PFAS0) + plot_annotation(tag_levels = c("A", "B",
    "C", "D"))

ggsave("fig/Fig_2.png", width = 15, height = 12, dpi = 1200)

Figure 3

Adapt orchard_plot function

my_orchard<- function (object, mod = "1", group, data, xlab, N = "none", 
    alpha = 0.5, angle = 90, cb = FALSE, k = TRUE, g = TRUE, 
    trunk.size = 3, branch.size = 1.2, twig.size = 0.5, transfm = c("none", 
        "tanh"), condition.lab = "Condition", legend.pos = c("bottom.right", 
        "bottom.left", "top.right", "top.left", 
        "top.out", "bottom.out"), k.pos = c("right", 
        "left"), weights = "prop", by = NULL, at = NULL) 
{
    transfm <- match.arg(NULL, choices = transfm)
    legend.pos <- match.arg(NULL, choices = legend.pos)
    k.pos <- match.arg(NULL, choices = k.pos)
    if (any(class(object) %in% c("rma.mv", "rma"))) {
        if (mod != "1") {
            results <- orchaRd::mod_results(object, mod, group, 
                data, by = by, at = at, weights = weights)
        }
        else {
            results <- orchaRd::mod_results(object, mod = "1", 
                group, data, by = by, at = at, weights = weights)
        }
    }
    if (any(class(object) %in% c("orchard"))) {
        results <- object
    }
    mod_table <- results$mod_table
    data_trim <- results$data
    data_trim$moderator <- factor(data_trim$moderator, levels = mod_table$name, 
        labels = mod_table$name)
    data_trim$scale <- (1/sqrt(data_trim[, "vi"]))
    legend <- "Precision (1/SE)"
    if (any(N != "none")) {
        data_trim$scale <- N
        legend <- paste0("Sample Size (", "N", ")")
    }
    if (transfm == "tanh") {
        cols <- sapply(mod_table, is.numeric)
        mod_table[, cols] <- Zr_to_r(mod_table[, cols])
        data_trim$yi <- Zr_to_r(data_trim$yi)
        label <- xlab
    }
    else {
        label <- xlab
    }
    mod_table$K <- as.vector(by(data_trim, data_trim[, "moderator"], 
        function(x) length(x[, "yi"])))
    mod_table$g <- as.vector(num_studies(data_trim, moderator, 
        stdy)[, 2])
    group_no <- length(unique(mod_table[, "name"]))
    cbpl <- c("#88CCEE", "#CC6677", "#DDCC77", 
        "#117733", "#332288", "#AA4499", "#44AA99", 
        "#999933", "#882255", "#661100", "#6699CC", 
        "#888888", "#E69F00", "#56B4E9", "#009E73", 
        "#F0E442", "#0072B2", "#D55E00", "#CC79A7", 
        "#999999")
    if (names(mod_table)[2] == "condition") {
        condition_no <- length(unique(mod_table[, "condition"]))
        plot <- ggplot2::ggplot() + ggbeeswarm::geom_quasirandom(data = data_trim, 
            ggplot2::aes(y = yi, x = moderator, size = scale, 
                colour = moderator), alpha = alpha) + ggplot2::geom_hline(yintercept = 0, 
            linetype = 2, colour = "black", alpha = alpha) + 
            ggplot2::geom_linerange(data = mod_table, ggplot2::aes(x = name, 
                ymin = lowerCL, ymax = upperCL), size = branch.size, 
                position = ggplot2::position_dodge2(width = 0.3)) + 
            ggplot2::geom_pointrange(data = mod_table, ggplot2::aes(y = estimate, 
                x = name, ymin = lowerPR, ymax = upperPR, shape = as.factor(condition), 
                fill = name), size = twig.size, stroke=2.2,position = ggplot2::position_dodge2(width = 0.3), # Added stroke
                fatten = trunk.size) + ggplot2::scale_shape_manual(values = 20 + 
            (1:condition_no)) + ggplot2::coord_flip() + ggplot2::theme_bw() + 
            ggplot2::guides(fill = "none", colour = "none") + 
            ggplot2::theme(legend.position = c(0, 1), legend.justification = c(0, 
                1)) + ggplot2::theme(legend.title = ggplot2::element_text(size = 9)) + 
            ggplot2::theme(legend.direction = "horizontal") + 
            ggplot2::theme(legend.background = ggplot2::element_blank()) + 
            ggplot2::labs(y = label, x = "", size = legend, 
                parse = TRUE) + ggplot2::labs(shape = condition.lab) + 
            ggplot2::theme(axis.text.y = ggplot2::element_text(size = 10, 
                colour = "black", hjust = 0.5, angle = angle))
    }
    else {
        plot <- ggplot2::ggplot() + ggbeeswarm::geom_quasirandom(data = data_trim, 
            ggplot2::aes(y = yi, x = moderator, size = scale, 
                colour = moderator), alpha = alpha) + ggplot2::geom_hline(yintercept = 0, 
            linetype = 2, colour = "black", alpha = alpha) + 
            ggplot2::geom_linerange(data = mod_table, ggplot2::aes(x = name, 
                ymin = lowerCL, ymax = upperCL), size = branch.size) + 
            ggplot2::geom_pointrange(data = mod_table, ggplot2::aes(y = estimate, 
                x = name, ymin = lowerPR, ymax = upperPR, fill = name), 
                size = twig.size, fatten = trunk.size, shape = 21) + 
            ggplot2::coord_flip() + ggplot2::theme_bw() + ggplot2::guides(fill = "none", 
            colour = "none") + ggplot2::theme(legend.title = ggplot2::element_text(size = 9)) + 
            ggplot2::theme(legend.direction = "horizontal") + 
            ggplot2::theme(legend.background = ggplot2::element_blank()) + 
            ggplot2::labs(y = label, x = "", size = legend) + 
            ggplot2::theme(axis.text.y = ggplot2::element_text(size = 10, 
                colour = "black", hjust = 0.5, angle = angle))
    }
    if (legend.pos == "bottom.right") {
        plot <- plot + ggplot2::theme(legend.position = c(1, 
            0), legend.justification = c(1, 0))
    }
    else if (legend.pos == "bottom.left") {
        plot <- plot + ggplot2::theme(legend.position = c(0, 
            0), legend.justification = c(0, 0))
    }
    else if (legend.pos == "top.right") {
        plot <- plot + ggplot2::theme(legend.position = c(1, 
            1), legend.justification = c(1, 1))
    }
    else if (legend.pos == "top.left") {
        plot <- plot + ggplot2::theme(legend.position = c(0, 
            1), legend.justification = c(0, 1))
    }
    else if (legend.pos == "top.out") {
        plot <- plot + ggplot2::theme(legend.position = "top")
    }
    else if (legend.pos == "bottom.out") {
        plot <- plot + ggplot2::theme(legend.position = "bottom")
    }
    if (cb == TRUE) {
        plot <- plot + ggplot2::scale_fill_manual(values = cbpl) + 
            ggplot2::scale_colour_manual(values = cbpl)
    }
    if (k == TRUE && g == FALSE && k.pos == "right") {
        plot <- plot + ggplot2::annotate("text", y = (max(data_trim$yi) + 
            (max(data_trim$yi) * 0.1)), x = (seq(1, group_no, 
            1) + 0.3), label = paste("italic(k)==", mod_table$K[1:group_no]), 
            parse = TRUE, hjust = "right", size = 3.5)
    }
    else if (k == TRUE && g == FALSE && k.pos == "left") {
        plot <- plot + ggplot2::annotate("text", y = (min(data_trim$yi) + 
            (min(data_trim$yi) * 0.1)), x = (seq(1, group_no, 
            1) + 0.3), label = paste("italic(k)==", mod_table$K[1:group_no]), 
            parse = TRUE, hjust = "left", size = 3.5)
    }
    else if (k == TRUE && g == TRUE && k.pos == "right") {
        plot <- plot + ggplot2::annotate("text", y = (max(data_trim$yi) + 
            (max(data_trim$yi) * 0.1)), x = (seq(1, group_no, 
            1) + 0.3), label = paste("italic(k)==", mod_table$K[1:group_no], 
            " (", mod_table$g[1:group_no], ")"), 
            parse = TRUE, hjust = "right", size = 3.5)
    }
    else if (k == TRUE && g == TRUE && k.pos == "left") {
        plot <- plot + ggplot2::annotate("text", y = (min(data_trim$yi) + 
            (min(data_trim$yi) * 0.1)), x = (seq(1, group_no, 
            1) + 0.3), label = paste("italic(k)==", mod_table$K[1:group_no], 
            " (", mod_table$g[1:group_no], ")"), 
            parse = TRUE, hjust = "left", size = 3.5)
    }
    return(plot)
}

Run full models in original units

full_model_org_units <- run_model(dat, ~-1 + Cooking_Category + Temperature_in_Celsius +
    Length_cooking_time_in_s + PFAS_carbon_chain + log_Ratio_liquid_fish)

# full model with Ratio_liquid_fish taken as `0` for the dry cooking category
full_model_org_units0 <- run_model(dat, ~-1 + Cooking_Category + Temperature_in_Celsius +
    Length_cooking_time_in_s + PFAS_carbon_chain + log_Ratio_liquid_fish0)

# full model without the 'No liquid' data for figure 3B, when Ratio_liquid_fish
# is taken as `NA` for the dry cooking category
full_model_org_units_oil_water <- run_model(dat_oil_water, ~-1 + Cooking_Category +
    Temperature_in_Celsius + Length_cooking_time_in_s + PFAS_carbon_chain + log_Ratio_liquid_fish)

Figure 3A

Estimates at cooking times of 2, 10 and 25 min

time_mm0 <-mod_results(full_model_org_units0, data = dat, mod = "1", group="Study_ID",at = list(Length_cooking_time_in_s = c(120,600,1500)), by = "Length_cooking_time_in_s")
 
p_time_mm0<-my_orchard(time_mm0, xlab = "lnRR", condition.lab = "Cooking time (sec)", alpha=0.3, trunk.size=8, branch.size = 1.75, twig.size = 0.75, legend.pos="bottom.left", k=F)+
           scale_size_continuous(range = c(1, 10), breaks=c(2,4,6))+
           scale_fill_manual(values="gray75")+
           scale_colour_manual(values = "gray60")+ # change colours
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 13),
                 legend.text = element_text(size = 10))+
           ylim(-6.05, 3)+
           annotate("text", y = 1.9, x = 1.3, label = paste("italic(k)==", 431), parse = TRUE, hjust = "right", size = 3.5) +
           annotate("text", y = 2.3, x = 1.299, label = paste("(7)"), parse = TRUE, hjust = "right", size = 3.5) 

Figure 3B

Estimates at 0.1 mL/g of tissue, 10 mL/g of tissue or 45 mL/g of tissue

volume_mm0 <-mod_results(full_model_org_units0, data = dat, mod = "1", group="Study_ID",at = list(log_Ratio_liquid_fish0= c(0, 2.4, 3.8)), by = "log_Ratio_liquid_fish0")
 
p_volume_mm0<-my_orchard(volume_mm0, xlab = "lnRR", condition.lab = "ln (Liquid/animal tissue ratio + 1) (mL/g)", alpha=0.3, trunk.size=8, branch.size = 1.75, twig.size = 0.75, legend.pos="bottom.left", k=F)+
           scale_size_continuous(range = c(1, 10))+
           scale_fill_manual(values="gray75")+
           scale_colour_manual(values = "gray60")+ # change colours
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 13),
                 legend.text = element_text(size = 10))+
          guides(size=F)+
           ylim(-6.05, 3)+
           annotate("text", y = 1.9, x = 1.3, label = paste("italic(k)==", 431), parse = TRUE, hjust = "right", size = 3.5) +
           annotate("text", y = 2.3, x = 1.297, label = paste("(7)"), parse = TRUE, hjust = "right", size = 3.5) 

Figure 3C

Estimates at cooking times of 2, 10 and 25 min

In this case, water- and oil-based cooking must be separated from dry cooking to avoid extrapolations of the dry cooking effect sizes at the mean liquid ratio.

time_mm_cat <- mod_results(full_model_org_units, data = dat, mod = "Cooking_Category", group="Study_ID", at = list(Length_cooking_time_in_s = c(120,600,1500)), by = "Length_cooking_time_in_s")
 
p_time_mm_wat_oil<-my_orchard(time_mm_cat ,xlab = "lnRR", group="Study_ID", condition.lab  = "Cooking time (sec)", alpha=0.3, trunk.size=8, branch.size = 1.75, twig.size = 0.75, legend.pos="bottom.left", k=F)+
           scale_size_continuous(range = c(1, 10))+
           scale_fill_manual(values=c("goldenrod2", "dodgerblue3"))+
           scale_colour_manual(values = c("goldenrod2", "dodgerblue3"))+ # change colours
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 0), # change font sizes
                 legend.title = element_text(size = 12),
                 legend.text = element_text(size = 10),
                 legend.position = "none")+ 
           guides(shape=F, size=F)+
           ylim(-6.1, 3)+
           annotate("text", y = 1.9, x = (seq(1, 2, 1) + 0.301), label = paste("italic(k)==", c(263, 121)), parse = TRUE, hjust = "right", size = 3.5)+
           annotate("text", y = 2.3, x = (seq(1, 2, 1) + 0.3), label = paste(c("(6)", "(6)")), parse = TRUE, hjust = "right", size = 3.5)

time_mm_dry<-mod_results(full_model_org_units_dry, data = dat_dry, group="Study_ID",at = list(Length_cooking_time_in_s = c(120,600,1500)), by = "Length_cooking_time_in_s")
p_time_mm_dry<-my_orchard(time_mm_dry, xlab = "lnRR", group="Study_ID", condition.lab  = "Cooking time (sec)", alpha=0.3, trunk.size=8, branch.size = 1.75, twig.size = 0.75, legend.pos="bottom.left", k=F)+
           scale_size_continuous(range = c(1, 10))+
           scale_fill_manual(values=c("#55C667FF"))+
           scale_colour_manual(values = c("#55C667FF"))+ # change colours
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 12),
                 legend.text = element_text(size = 10))+ 
           guides(size=F)+
           ylim(-6.05, 3)+
           annotate("text", y = 1.9, x = 1.3, label = paste("italic(k)==", 47), parse = TRUE, hjust = "right", size = 3.5)+
           annotate("text", y = 2.3, x = 1.299, label = paste("(1)"), parse = TRUE, hjust = "right", size = 3.5)


p_time_mm_cat<-p_time_mm_wat_oil/p_time_mm_dry + plot_layout(heights=c(2,1))

Combine plots and save

((p_time_mm0/p_volume_mm0) | p_time_mm_cat) + plot_annotation(tag_levels = c("A",
    "B", "C"))

ggsave("fig/Fig_3.png", width = 14, height = 11, dpi = 1200)

Figure 4

Figure 4A

##### Oil based
full_model_oil_time0<- run_model(oil_dat, ~ scale(Temperature_in_Celsius) +
                                           Length_cooking_time_in_s+
                                           scale(PFAS_carbon_chain) +
                                           scale(log(Ratio_liquid_fish_0 + 1)))

pred_oil_time0<-predict.rma(full_model_oil_time0, addx=TRUE, newmods=cbind(0,oil_dat$Length_cooking_time_in_s, 0, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_oil_time0<-as.data.frame(pred_oil_time0)
pred_oil_time0$Length_cooking_time_in_s=pred_oil_time0$X.Length_cooking_time_in_s
pred_oil_time0<-left_join(oil_dat, pred_oil_time0, by="Length_cooking_time_in_s")


##### Water based
full_model_water_time0<- run_model(water_dat, ~ scale(Temperature_in_Celsius) +
                                           Length_cooking_time_in_s+
                                           scale(PFAS_carbon_chain) +
                                           scale(log(Ratio_liquid_fish_0 + 1)))

pred_water_time0<-predict.rma(full_model_water_time0, addx=TRUE, newmods=cbind(water_dat$Length_cooking_time_in_s, 0, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_water_time0<-as.data.frame(pred_water_time0)
pred_water_time0$Length_cooking_time_in_s=pred_water_time0$X.Length_cooking_time_in_s
pred_water_time0<-left_join(water_dat, pred_water_time0, by="Length_cooking_time_in_s")

##### No liquid 

full_model_dry_time<- run_model(dry_dat, ~ Length_cooking_time_in_s)

pred_dry_time<-predict.rma(full_model_dry_time, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_dry_time<-as.data.frame(pred_dry_time)
pred_dry_time$Length_cooking_time_in_s=pred_dry_time$X.Length_cooking_time_in_s
pred_dry_time<-left_join(dry_dat, pred_dry_time, by="Length_cooking_time_in_s")




p_4A0<-ggplot(dat,aes(x = Length_cooking_time_in_s, y = lnRR, fill=Cooking_Category)) +
  
       geom_ribbon(data=pred_water_time0, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_water_time0,aes(y = pred), size = 1.5, col="dodgerblue")+  
  
       geom_ribbon(data=pred_oil_time0, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_oil_time0,aes(y = pred), size = 1.5, col="goldenrod")+  
  
        geom_ribbon(data=pred_dry_time, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_dry_time,aes(y = pred), size = 1.5, col="palegreen3")+  
  
  
       geom_point(aes(size=(1/sqrt(var_lnRR)), fill=Cooking_Category), shape=21, alpha=0.8) +
       scale_fill_manual(values=c("#55C667FF", "goldenrod2", "dodgerblue3"))+
       labs(x = "Cooking time (s)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position=c(1,0), 
          legend.justification = c(1,0),
          legend.background = element_blank(), 
          legend.direction="horizontal",
          legend.title = element_text(size=15), 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))+
  guides(fill=F)

Figure 4B

##### Oil based
full_model_oil_vol0 <- run_model(oil_dat, ~scale(Temperature_in_Celsius) + scale(Length_cooking_time_in_s) +
    scale(PFAS_carbon_chain) + log_Ratio_liquid_fish0)
pred_oil_vol0 <- predict.rma(full_model_oil_vol0, addx = TRUE, newmods = cbind(0,
    0, 0, oil_dat$log_Ratio_liquid_fish0))  # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time

pred_oil_vol0 <- as.data.frame(pred_oil_vol0)
pred_oil_vol0 <- pred_oil_vol0 %>%
    mutate(Ratio_liquid_fish_0 = exp(X.log_Ratio_liquid_fish0) - 1, Cooking_Category = "oil-based",
        lnRR = 0)  # for the plot to work, we need to add a column with cooking category and a column with lnRR


##### Water based

full_model_water_vol0 <- run_model(water_dat, ~scale(Temperature_in_Celsius) + scale(Length_cooking_time_in_s) +
    scale(PFAS_carbon_chain) + log_Ratio_liquid_fish0)

pred_water_vol0 <- predict.rma(full_model_water_vol0, addx = TRUE, newmods = cbind(0,
    0, water_dat$log_Ratio_liquid_fish0))  # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time

pred_water_vol0 <- as.data.frame(pred_water_vol0)
pred_water_vol0 <- pred_water_vol0 %>%
    mutate(Ratio_liquid_fish_0 = exp(X.log_Ratio_liquid_fish0) - 1, Cooking_Category = "water-based",
        lnRR = 0)



p_4B0 <- ggplot(dat, aes(x = log(Ratio_liquid_fish_0 + 1), y = lnRR, fill = Cooking_Category)) +

geom_ribbon(data = pred_water_vol0, aes(ymin = ci.lb, ymax = ci.ub, color = NULL),
    alpha = 0.2) + geom_line(data = pred_water_vol0, aes(y = pred), size = 1.5, col = "dodgerblue") +

geom_ribbon(data = pred_oil_vol0, aes(ymin = ci.lb, ymax = ci.ub, color = NULL),
    alpha = 0.3) + geom_line(data = pred_oil_vol0, aes(y = pred), size = 1.5, col = "goldenrod") +


geom_point(aes(size = (1/sqrt(var_lnRR)), fill = Cooking_Category), shape = 21, alpha = 0.8) +
    scale_fill_manual(values = c("#55C667FF", "goldenrod2", "dodgerblue3")) + labs(x = "ln(Liquid/animal tissue ratio + 1) (mL/g)",
    y = "lnRR", size = "Precison (1/SE)") + scale_size_continuous(range = c(1, 10)) +
    theme_bw() + geom_hline(yintercept = 0, linetype = 2, colour = "black", alpha = 0.5) +
    theme(text = element_text(size = 18, colour = "black", hjust = 0.5), legend.text = element_text(size = 14),
        legend.position = "none", panel.border = element_rect(colour = "black", fill = NA,
            size = 1.2))

Figure 4C

full_model_oil_temp0<- run_model(oil_dat, ~ Temperature_in_Celsius +
                                           scale(Length_cooking_time_in_s)+
                                           scale(PFAS_carbon_chain) +
                                           scale(log(Ratio_liquid_fish_0 + 1)))

pred_oil_temp0<-predict.rma(full_model_oil_temp0, addx=TRUE, newmods=cbind(oil_dat$Temperature_in_Celsius,0, 0,0)) 
pred_oil_temp0<-as.data.frame(pred_oil_temp0)
pred_oil_temp0$Temperature_in_Celsius=pred_oil_temp0$X.Temperature_in_Celsius
pred_oil_temp0<-left_join(oil_dat, pred_oil_temp0, by="Temperature_in_Celsius")



p_4C0<-ggplot(dat,aes(x = Temperature_in_Celsius, y = lnRR, fill=Cooking_Category)) +
    
       geom_ribbon(data=pred_oil_temp0, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.3) +
       geom_line(data=pred_oil_temp0,aes(y = pred), size = 1.5, col="goldenrod")+  
  
       geom_point(aes(size=(1/sqrt(var_lnRR)), fill=Cooking_Category), shape=21, alpha=0.8) +
       scale_fill_manual(values=c("#55C667FF", "goldenrod2", "dodgerblue3"), 
                         labels=c("no liquid", "oil-based", "water-based"))+
       labs(x = "Cooking temperature (°C)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position=c(1,0), 
          legend.justification = c(1,0),
          legend.background = element_blank(), 
          legend.direction="vertical",
          legend.title = element_text(size=15), 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))+
  guides(size=F)

Figure 4D

##### Oil based
full_model_oil_PFAS0<- run_model(oil_dat, ~ scale(Temperature_in_Celsius) +
                                           scale(Length_cooking_time_in_s)+
                                           PFAS_carbon_chain +
                                           scale(log(Ratio_liquid_fish_0 + 1)))

pred_oil_PFAS0<-predict.rma(full_model_oil_PFAS0, addx=TRUE, newmods=cbind(0,0, oil_dat$PFAS_carbon_chain,0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of PFAS carbon chain
pred_oil_PFAS0<-as.data.frame(pred_oil_PFAS0)
pred_oil_PFAS0$PFAS_carbon_chain=pred_oil_PFAS0$X.PFAS_carbon_chain
pred_oil_PFAS0<-left_join(oil_dat, pred_oil_PFAS0, by="PFAS_carbon_chain")


##### Water based
full_model_water_PFAS0<- run_model(water_dat, ~ scale(Temperature_in_Celsius) +
                                           scale(Length_cooking_time_in_s)+
                                           PFAS_carbon_chain +
                                           scale(log(Ratio_liquid_fish_0 + 1)))

pred_water_PFAS0<-predict.rma(full_model_water_PFAS0, addx=TRUE, newmods=cbind(0, water_dat$PFAS_carbon_chain,0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_water_PFAS0<-as.data.frame(pred_water_PFAS0)
pred_water_PFAS0$PFAS_carbon_chain=pred_water_PFAS0$X.PFAS_carbon_chain
pred_water_PFAS0<-left_join(water_dat, pred_water_PFAS0, by="PFAS_carbon_chain")

##### No liquid 

full_model_dry_PFAS<- run_model(dry_dat, ~ PFAS_carbon_chain)

pred_dry_PFAS<-predict.rma(full_model_dry_PFAS, addx=TRUE)
pred_dry_PFAS<-as.data.frame(pred_dry_PFAS)
pred_dry_PFAS$PFAS_carbon_chain=pred_dry_PFAS$X.PFAS_carbon_chain
pred_dry_PFAS<-left_join(dry_dat, pred_dry_PFAS, by="PFAS_carbon_chain")




p_4D0<-ggplot(dat,aes(x = PFAS_carbon_chain, y = lnRR, fill=Cooking_Category)) +
  
    
       geom_ribbon(data=pred_dry_PFAS, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_dry_PFAS,aes(y = pred), size = 1.5, col="palegreen3")+  
  
  
       geom_ribbon(data=pred_water_PFAS0, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_water_PFAS0,aes(y = pred), size = 1.5, col="dodgerblue")+  
  
  
       geom_ribbon(data=pred_oil_PFAS0, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.3) +
       geom_line(data=pred_oil_PFAS0,aes(y = pred), size = 1.5, col="goldenrod")+  
  
  
       geom_point(aes(size=(1/sqrt(var_lnRR)), fill=Cooking_Category), shape=21, alpha=0.8) +
       scale_fill_manual(values=c("#55C667FF", "goldenrod2", "dodgerblue3"))+
       labs(x = "PFAS carbon chain length", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position="none",
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Combine and save

(p_4A0 + p_4B0)/(p_4C0 + p_4D0) + plot_annotation(tag_levels = c("A", "B", "C", "D"))

ggsave("fig/Fig_4.png", width = 15, height = 12, dpi = 1200)

Figure 5

Figure 5A

dat$Study_ID<- as.factor(dat$Study_ID)

# funnel(full_model, 
#       yaxis="seinv", # Inverse of standard error (precision) as the y axis
#       level = c(90, 95, 99),  # levels of statistical significance highlighted 
#       shade = c("white", "gray75", "gray55", "gray40"), # shades for different levels of statistical significance
#       legend = TRUE, # display legend
#       ylab="Precision (1/SE)", 
#       cex.lab=1.75, 
#       digits=1, 
#       cex=2,
#       pch=21,
#       col=dat$Study_ID)


pdf(NULL)
dev.control(displaylist="enable")
par(mar=c(4,6,0.1,0))

plot_f0 <- funnel(full_model0, 
      yaxis="seinv", # Inverse of standard error (precision) as the y axis
      level = c(90, 95, 99),  # levels of statistical significance highlighted 
      shade = c("white", "gray75", "gray55", "gray40"), # shades for different levels of statistical significance
      legend = TRUE, # display legend
      ylab="Precision (1/SE)", 
      cex.lab=1.75, 
      digits=2, 
      ylim=c(0.85,1.05),
      xlim=c(-6, 6),
      cex=2,
      pch=21,
      col=dat$Study_ID)

p_5A0 <- recordPlot(plot_f0)
invisible(dev.off())

Figure 5B

full_model_egger0 <- run_model(dat, ~ - 1 +
                      I(sqrt(1/N_tilde)) +  
                      scale(Publication_year) + 
                      scale(Temperature_in_Celsius) +
                      scale(Length_cooking_time_in_s) +
                      scale(PFAS_carbon_chain) +
                      scale(log(Ratio_liquid_fish_0 + 1))) # Model to get predictions


pred_egger0<-predict.rma(full_model_egger0, addx=TRUE, newmods=cbind(sqrt(1/dat$N_tilde),0,0,0 ,0, 0)) 
pred_egger0<-as.data.frame(pred_egger0)
pred_egger0$SE_eff_N=pred_egger0$X.I.sqrt.1.N_tilde..
pred_egger0<- pred_egger0 %>% mutate(N_tilde = ((1/X.I.sqrt.1.N_tilde..)^2), lnRR = 0) 

p_5B0<-ggplot(dat,aes(x = sqrt(1/N_tilde), y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_egger0, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_egger0,aes(y = pred), size = 1.5, color="orangered2")+  

       labs(x = "Standard error", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 20, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.position="none",
          panel.border=element_rect(colour="black", fill=NA, size=1.2))+
  xlim(0.18,1)

Figure 5C

full_model_pub0 <- run_model(dat, ~ - 1 +
                      scale(I(sqrt(1/N_tilde))) +  
                      Publication_year + 
                      scale(Temperature_in_Celsius) +
                      scale(Length_cooking_time_in_s) +
                      scale(PFAS_carbon_chain) +
                      scale(log(Ratio_liquid_fish_0 + 1))) # Model to get predictions


pred_pub0<-predict.rma(full_model_pub0, addx=TRUE, newmods=cbind(0,dat$Publication_year,0,0 ,0, 0)) 
pred_pub0<-as.data.frame(pred_pub0)
pred_pub0$Publication_year=pred_pub0$X.Publication_year
pred_pub0<-left_join(dat, pred_pub0, by="Publication_year")



p_5C0<-ggplot(dat,aes(x = Publication_year, y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_pub0, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_pub0,aes(y = pred), size = 1.5, color="orangered2")+  

       labs(x = "Publication year", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 20, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position=c(1,0), 
          legend.justification = c(1,0),
          legend.background = element_blank(), 
          legend.direction="vertical",
          legend.title = element_text(size=15), 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))  +
   scale_x_continuous(breaks=c(2008, 2010, 2012, 2014, 2016, 2018 ,2020))

Combine and save

(ggdraw(p_5A0) + ggdraw(p_5B0) + ggdraw(p_5C0) + plot_annotation(tag_levels = "A"))

ggsave(here("fig/Fig_5BC.png"), width = 18, height = 7, dpi = 1200)

Supplementary figures

In those figures, the liquid/animal tissue ratio was taken as NA for the dry cooking category

Figure 2, with Ratio_liquid_fish taken as NA for the dry cooking method

Figure 2A

full_model_time<- run_model(dat, ~     scale(Temperature_in_Celsius) +
                                       Length_cooking_time_in_s+
                                       scale(PFAS_carbon_chain) +
                                       scale(log(Ratio_liquid_fish)))

pred_full_model_time<-predict.rma(full_model_time, addx=TRUE, newmods=cbind(0,dat$Length_cooking_time_in_s, 0, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_full_model_time<-as.data.frame(pred_full_model_time)
pred_full_model_time$Length_cooking_time_in_s=pred_full_model_time$X.Length_cooking_time_in_s
pred_full_model_time<-left_join(dat, pred_full_model_time, by="Length_cooking_time_in_s")



uni_model_time<- run_model(dat, ~ Length_cooking_time_in_s)

pred_uni_model_time<-predict.rma(uni_model_time, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_uni_model_time<-as.data.frame(pred_uni_model_time)
pred_uni_model_time$Length_cooking_time_in_s=pred_uni_model_time$X.Length_cooking_time_in_s
pred_uni_model_time<-left_join(dat, pred_uni_model_time, by="Length_cooking_time_in_s")



p_time<-ggplot(dat,aes(x = Length_cooking_time_in_s, y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_full_model_time, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_full_model_time,aes(y = pred), size = 1.5, color="orangered2")+  
  
       geom_ribbon(data=pred_uni_model_time, aes(ymin = ci.lb, ymax = ci.ub), alpha=0.25, fill="gray40") +
       geom_line(data=pred_uni_model_time,aes(y = pred), size = 1.5, col="gray30")+  
  
       labs(x = "Cooking time (s)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.position="none",
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Figure 2B

full_model_vol<- run_model(dat, ~      scale(Temperature_in_Celsius) +
                                       scale(Length_cooking_time_in_s)+
                                       scale(PFAS_carbon_chain) +
                                       log_Ratio_liquid_fish)

pred_full_model_vol<-predict.rma(full_model_vol, addx=TRUE, newmods=cbind(0,0, 0, dat$log_Ratio_liquid_fish))
pred_full_model_vol<-as.data.frame(pred_full_model_vol)
pred_full_model_vol$log_Ratio_liquid_fish=pred_full_model_vol$X.log_Ratio_liquid_fish
pred_full_model_vol<- pred_full_model_vol %>% mutate(Ratio_liquid_fish = exp(X.log_Ratio_liquid_fish), lnRR = 0) 



uni_model_vol<- run_model(dat, ~ log_Ratio_liquid_fish)

pred_uni_model_vol<-predict.rma(uni_model_vol, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_uni_model_vol<-as.data.frame(pred_uni_model_vol)
pred_uni_model_vol$log_Ratio_liquid_fish=pred_uni_model_vol$X.log_Ratio_liquid_fish
pred_uni_model_vol<- pred_uni_model_vol %>% mutate(Ratio_liquid_fish = exp(X.log_Ratio_liquid_fish), lnRR = 0) 



p_vol<-ggplot(dat,aes(x = log_Ratio_liquid_fish, y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_full_model_vol, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_full_model_vol,aes(y = pred), size = 1.5, color="orangered2")+  
  
       geom_ribbon(data=pred_uni_model_vol, aes(ymin = ci.lb, ymax = ci.ub), alpha=0.25, fill="gray40") +
       geom_line(data=pred_uni_model_vol,aes(y = pred), size = 1.5, col="gray30")+  
  
       labs(x = "ln (Liquid volume to tissue sample ratio) (mL/g)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.position="none", 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Figure 2C

full_model_temp<- run_model(dat, ~     Temperature_in_Celsius +
                                       scale(Length_cooking_time_in_s)+
                                       scale(PFAS_carbon_chain) +
                                       scale(log(Ratio_liquid_fish)))

pred_full_model_temp<-predict.rma(full_model_temp, addx=TRUE, newmods=cbind(dat$Temperature_in_Celsius,0, 0, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_full_model_temp<-as.data.frame(pred_full_model_temp)
pred_full_model_temp$Temperature_in_Celsius=pred_full_model_temp$X.Temperature_in_Celsius
pred_full_model_temp<-left_join(dat, pred_full_model_temp, by="Temperature_in_Celsius")



uni_model_temp<- run_model(dat, ~ Temperature_in_Celsius)

pred_uni_model_temp<-predict.rma(uni_model_temp, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_uni_model_temp<-as.data.frame(pred_uni_model_temp)
pred_uni_model_temp$Temperature_in_Celsius=pred_uni_model_temp$X.Temperature_in_Celsius
pred_uni_model_temp<-left_join(dat, pred_uni_model_temp, by="Temperature_in_Celsius")



p_temp<-ggplot(dat,aes(x = Temperature_in_Celsius, y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_full_model_temp, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_full_model_temp,aes(y = pred), size = 1.5, color="orangered2")+  
  
       geom_ribbon(data=pred_uni_model_temp, aes(ymin = ci.lb, ymax = ci.ub), alpha=0.25, fill="gray40") +
       geom_line(data=pred_uni_model_temp,aes(y = pred), size = 1.5, col="gray30")+  
  
       labs(x = "Cooking temperature (°C)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position=c(1,0), 
          legend.justification = c(1,0),
          legend.background = element_blank(), 
          legend.direction="vertical",
          legend.title = element_text(size=15), 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Figure 2D

full_model_PFAS<- run_model(dat, ~     scale(Temperature_in_Celsius) +
                                       scale(Length_cooking_time_in_s)+
                                       PFAS_carbon_chain +
                                       scale(log(Ratio_liquid_fish)))

pred_full_model_PFAS<-predict.rma(full_model_PFAS, addx=TRUE, newmods=cbind(0, 0, dat$PFAS_carbon_chain, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_full_model_PFAS<-as.data.frame(pred_full_model_PFAS)
pred_full_model_PFAS$PFAS_carbon_chain=pred_full_model_PFAS$X.PFAS_carbon_chain
pred_full_model_PFAS<-left_join(dat, pred_full_model_PFAS, by="PFAS_carbon_chain")



uni_model_PFAS<- run_model(dat, ~ PFAS_carbon_chain)

pred_uni_model_PFAS<-predict.rma(uni_model_PFAS, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_uni_model_PFAS<-as.data.frame(pred_uni_model_PFAS)
pred_uni_model_PFAS$PFAS_carbon_chain=pred_uni_model_PFAS$X.PFAS_carbon_chain
pred_uni_model_PFAS<-left_join(dat, pred_uni_model_PFAS, by="PFAS_carbon_chain")



p_PFAS<-ggplot(dat,aes(x = PFAS_carbon_chain, y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_full_model_PFAS, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_full_model_PFAS,aes(y = pred), size = 1.5, color="orangered2")+  
  
       geom_ribbon(data=pred_uni_model_PFAS, aes(ymin = ci.lb, ymax = ci.ub), alpha=0.25, fill="gray40") +
       geom_line(data=pred_uni_model_PFAS,aes(y = pred), size = 1.5, col="gray30")+  
  
       labs(x = "PFAS carbon chain length", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.position="none",
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Combine plots

(p_time + p_vol)/(p_temp + p_PFAS) + plot_annotation(tag_levels = c("A", "B", "C",
    "D"))

Figure 3, with Ratio_liquid_fish taken as NA for the dry cooking category

Figure 3A

Estimates at cooking times of 2, 10 and 25 min

time_mm <-mod_results(full_model_org_units, data = dat, mod = "1", group="Study_ID", at = list(Length_cooking_time_in_s = c(120,600,1500)), by = "Length_cooking_time_in_s")
 
p_time_mm<-my_orchard(time_mm, xlab = "lnRR", mod="1", condition.lab = "Cooking time (sec)", group="Study_ID", alpha=0.3, trunk.size=8, branch.size = 1.75, twig.size = 0.75, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 10))+
           scale_fill_manual(values="gray75")+
           scale_colour_manual(values = "gray60")+ # change colours
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 13),
                 legend.text = element_text(size = 10))+
          guides(size=F)

Figure 3B

Estimates at 0 mL/g of tissue, 10 mL/g of tissue or 45 mL/g of tissue

volume_mm <-mod_results(full_model_org_units_oil_water, data = dat_oil_water, mod = "1", group="Study_ID",at = list(log_Ratio_liquid_fish= c(-2.3, 2.3, 3.8)), by = "log_Ratio_liquid_fish")
 
p_volume_mm<-my_orchard(volume_mm, xlab = "lnRR", data=dat_oil_water,condition.lab = "ln (Liquid to sample ratio)", alpha=0.3, trunk.size=8, branch.size = 1.75, twig.size = 0.75, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 10))+
           scale_fill_manual(values="gray75")+
           scale_colour_manual(values = "gray60")+ # change colours
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 13),
                 legend.text = element_text(size = 10))+
           guides(size=F)

Figure 3C

Estimates at cooking times of 2, 10 and 25 min

time_mm_cat <- mod_results(full_model_org_units, data = dat, mod = "Cooking_Category", group="Study_ID",at = list(Length_cooking_time_in_s = c(120,600,1500)), by = "Length_cooking_time_in_s")
 
p_time_mm_cat<-my_orchard(time_mm_cat, xlab = "lnRR", condition.lab  = "Cooking time (sec)", alpha=0.3, trunk.size=8, branch.size = 1.75, twig.size = 0.75, legend.pos="bottom.left")+
           scale_size_continuous(range = c(1, 10), breaks=c(2,4,6))+
           scale_fill_manual(values=c("goldenrod2", "dodgerblue3"))+
           scale_colour_manual(values = c("goldenrod2", "dodgerblue3"))+ # change colours
           theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
                 text = element_text(size = 24), # change font sizes
                 legend.title = element_text(size = 13),
                 legend.text = element_text(size = 10))

Combine plots

((p_time_mm/p_volume_mm) | p_time_mm_cat) + plot_annotation(tag_levels = c("A", "B",
    "C"))

Figure 4, with Ratio_liquid_fish taken as NA for the dry cooking category

Figure 4A

##### Oil based
full_model_oil_time<- run_model(oil_dat, ~ scale(Temperature_in_Celsius) +
                                           Length_cooking_time_in_s+
                                           scale(PFAS_carbon_chain) +
                                           scale(log(Ratio_liquid_fish)))

pred_oil_time<-predict.rma(full_model_oil_time, addx=TRUE, newmods=cbind(0,oil_dat$Length_cooking_time_in_s, 0, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_oil_time<-as.data.frame(pred_oil_time)
pred_oil_time$Length_cooking_time_in_s=pred_oil_time$X.Length_cooking_time_in_s
pred_oil_time<-left_join(oil_dat, pred_oil_time, by="Length_cooking_time_in_s")


##### Water based
full_model_water_time<- run_model(water_dat, ~ scale(Temperature_in_Celsius) +
                                           Length_cooking_time_in_s+
                                           scale(PFAS_carbon_chain) +
                                           scale(log(Ratio_liquid_fish)))

pred_water_time<-predict.rma(full_model_water_time, addx=TRUE, newmods=cbind(water_dat$Length_cooking_time_in_s, 0, 0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_water_time<-as.data.frame(pred_water_time)
pred_water_time$Length_cooking_time_in_s=pred_water_time$X.Length_cooking_time_in_s
pred_water_time<-left_join(water_dat, pred_water_time, by="Length_cooking_time_in_s")

##### No liquid 

full_model_dry_time<- run_model(dry_dat, ~ Length_cooking_time_in_s)

pred_dry_time<-predict.rma(full_model_dry_time, addx=TRUE) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_dry_time<-as.data.frame(pred_dry_time)
pred_dry_time$Length_cooking_time_in_s=pred_dry_time$X.Length_cooking_time_in_s
pred_dry_time<-left_join(dry_dat, pred_dry_time, by="Length_cooking_time_in_s")




p_4A<-ggplot(dat,aes(x = Length_cooking_time_in_s, y = lnRR, fill=Cooking_Category)) +
  
       geom_ribbon(data=pred_water_time, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_water_time,aes(y = pred), size = 1.5, col="dodgerblue")+  
  
       geom_ribbon(data=pred_oil_time, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_oil_time,aes(y = pred), size = 1.5, col="goldenrod")+  
  
        geom_ribbon(data=pred_dry_time, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_dry_time,aes(y = pred), size = 1.5, col="palegreen3")+  
  
  
       geom_point(aes(size=(1/sqrt(var_lnRR)), fill=Cooking_Category), shape=21, alpha=0.8) +
       scale_fill_manual(values=c("#55C667FF", "goldenrod2", "dodgerblue3"))+
       labs(x = "Cooking time (s)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position=c(1,0), 
          legend.justification = c(1,0),
          legend.background = element_blank(), 
          legend.direction="horizontal",
          legend.title = element_text(size=15), 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))+
  guides(fill=F)

Figure 4B

##### Oil based
full_model_oil_vol <- run_model(oil_dat, ~scale(Temperature_in_Celsius) + scale(Length_cooking_time_in_s) +
    scale(PFAS_carbon_chain) + log_Ratio_liquid_fish)
pred_oil_vol <- predict.rma(full_model_oil_vol, addx = TRUE, newmods = cbind(0, 0,
    0, oil_dat$log_Ratio_liquid_fish))  # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time

pred_oil_vol <- as.data.frame(pred_oil_vol)
pred_oil_vol <- pred_oil_vol %>%
    mutate(Ratio_liquid_fish = exp(X.log_Ratio_liquid_fish), Cooking_Category = "oil-based",
        lnRR = 0)  # for the plot to work, we need to add a column with cooking category and a column with lnRR


##### Water based

full_model_water_vol <- run_model(water_dat, ~scale(Temperature_in_Celsius) + scale(Length_cooking_time_in_s) +
    scale(PFAS_carbon_chain) + log_Ratio_liquid_fish)

pred_water_vol <- predict.rma(full_model_water_vol, addx = TRUE, newmods = cbind(0,
    0, water_dat$log_Ratio_liquid_fish))  # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time

pred_water_vol <- as.data.frame(pred_water_vol)
pred_water_vol <- pred_water_vol %>%
    mutate(Ratio_liquid_fish = exp(X.log_Ratio_liquid_fish), Cooking_Category = "water-based",
        lnRR = 0)



p_4B <- ggplot(dat, aes(x = log(Ratio_liquid_fish), y = lnRR, fill = Cooking_Category)) +

geom_ribbon(data = pred_water_vol, aes(ymin = ci.lb, ymax = ci.ub, color = NULL),
    alpha = 0.2) + geom_line(data = pred_water_vol, aes(y = pred), size = 1.5, col = "dodgerblue") +

geom_ribbon(data = pred_oil_vol, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.3) +
    geom_line(data = pred_oil_vol, aes(y = pred), size = 1.5, col = "goldenrod") +


geom_point(aes(size = (1/sqrt(var_lnRR)), fill = Cooking_Category), shape = 21, alpha = 0.8) +
    scale_fill_manual(values = c("#55C667FF", "goldenrod2", "dodgerblue3")) + labs(x = "ln(Liquid volume to tissue sample ratio) (mL/g)",
    y = "lnRR", size = "Precison (1/SE)") + scale_size_continuous(range = c(1, 10)) +
    theme_bw() + geom_hline(yintercept = 0, linetype = 2, colour = "black", alpha = 0.5) +
    theme(text = element_text(size = 18, colour = "black", hjust = 0.5), legend.text = element_text(size = 14),
        legend.position = "none", panel.border = element_rect(colour = "black", fill = NA,
            size = 1.2))  #### The line doesn't go all the way down for water-based because the highest values are not included in the full model

Figure 4C

full_model_oil_temp<- run_model(oil_dat, ~ Temperature_in_Celsius +
                                           scale(Length_cooking_time_in_s)+
                                           scale(PFAS_carbon_chain) +
                                           scale(log(Ratio_liquid_fish)))

pred_oil_temp<-predict.rma(full_model_oil_temp, addx=TRUE, newmods=cbind(oil_dat$Temperature_in_Celsius,0, 0,0)) 
pred_oil_temp<-as.data.frame(pred_oil_temp)
pred_oil_temp$Temperature_in_Celsius=pred_oil_temp$X.Temperature_in_Celsius
pred_oil_temp<-left_join(oil_dat, pred_oil_temp, by="Temperature_in_Celsius")



p_4C<-ggplot(dat,aes(x = Temperature_in_Celsius, y = lnRR, fill=Cooking_Category)) +
    
       geom_ribbon(data=pred_oil_temp, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.3) +
       geom_line(data=pred_oil_temp,aes(y = pred), size = 1.5, col="goldenrod")+  
  
       geom_point(aes(size=(1/sqrt(var_lnRR)), fill=Cooking_Category), shape=21, alpha=0.8) +
       scale_fill_manual(values=c("#55C667FF", "goldenrod2", "dodgerblue3"))+
       labs(x = "Cooking temperature (°C)", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position=c(1,0), 
          legend.justification = c(1,0),
          legend.background = element_blank(), 
          legend.direction="vertical",
          legend.title = element_text(size=15), 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))+
  guides(size=F)

Figure 4D

##### Oil based
full_model_oil_PFAS<- run_model(oil_dat, ~ scale(Temperature_in_Celsius) +
                                           scale(Length_cooking_time_in_s)+
                                           PFAS_carbon_chain +
                                           scale(log(Ratio_liquid_fish)))

pred_oil_PFAS<-predict.rma(full_model_oil_PFAS, addx=TRUE, newmods=cbind(0,0, oil_dat$PFAS_carbon_chain,0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of PFAS carbon chain
pred_oil_PFAS<-as.data.frame(pred_oil_PFAS)
pred_oil_PFAS$PFAS_carbon_chain=pred_oil_PFAS$X.PFAS_carbon_chain
pred_oil_PFAS<-left_join(oil_dat, pred_oil_PFAS, by="PFAS_carbon_chain")


##### Water based
full_model_water_PFAS<- run_model(water_dat, ~ scale(Temperature_in_Celsius) +
                                           scale(Length_cooking_time_in_s)+
                                           PFAS_carbon_chain +
                                           scale(log(Ratio_liquid_fish)))

pred_water_PFAS<-predict.rma(full_model_water_PFAS, addx=TRUE, newmods=cbind(0, water_dat$PFAS_carbon_chain,0)) # Set all predictors to their mean (mean =0 when z-transformed) and set the range of values of cooking time
pred_water_PFAS<-as.data.frame(pred_water_PFAS)
pred_water_PFAS$PFAS_carbon_chain=pred_water_PFAS$X.PFAS_carbon_chain
pred_water_PFAS<-left_join(water_dat, pred_water_PFAS, by="PFAS_carbon_chain")

##### No liquid 

full_model_dry_PFAS<- run_model(dry_dat, ~ PFAS_carbon_chain)

pred_dry_PFAS<-predict.rma(full_model_dry_PFAS, addx=TRUE)
pred_dry_PFAS<-as.data.frame(pred_dry_PFAS)
pred_dry_PFAS$PFAS_carbon_chain=pred_dry_PFAS$X.PFAS_carbon_chain
pred_dry_PFAS<-left_join(dry_dat, pred_dry_PFAS, by="PFAS_carbon_chain")




p_4D<-ggplot(dat,aes(x = PFAS_carbon_chain, y = lnRR, fill=Cooking_Category)) +
  
    
       geom_ribbon(data=pred_dry_PFAS, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_dry_PFAS,aes(y = pred), size = 1.5, col="palegreen3")+  
  
  
       geom_ribbon(data=pred_water_PFAS, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.2) +
       geom_line(data=pred_water_PFAS,aes(y = pred), size = 1.5, col="dodgerblue")+  
  
  
       geom_ribbon(data=pred_oil_PFAS, aes(ymin = ci.lb, ymax = ci.ub, color = NULL), alpha = 0.3) +
       geom_line(data=pred_oil_PFAS,aes(y = pred), size = 1.5, col="goldenrod")+  
  
  
       geom_point(aes(size=(1/sqrt(var_lnRR)), fill=Cooking_Category), shape=21, alpha=0.8) +
       scale_fill_manual(values=c("#55C667FF", "goldenrod2", "dodgerblue3"))+
       labs(x = "PFAS carbon chain length", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 18, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position="none",
          panel.border=element_rect(colour="black", fill=NA, size=1.2))

Combine plots

(p_4A + p_4B)/(p_4C + p_4D) + plot_annotation(tag_levels = c("A", "B", "C", "D"))

Figure 5, with Ratio_liquid_fish taken as NA for the dry cooking category

Figure 5A

dat$Study_ID<- as.factor(dat$Study_ID)

# funnel(full_model, 
#       yaxis="seinv", # Inverse of standard error (precision) as the y axis
#       level = c(90, 95, 99),  # levels of statistical significance highlighted 
#       shade = c("white", "gray75", "gray55", "gray40"), # shades for different levels of statistical significance
#       legend = TRUE, # display legend
#       ylab="Precision (1/SE)", 
#       cex.lab=1.75, 
#       digits=1, 
#       cex=2,
#       pch=21,
#       col=dat$Study_ID)


pdf(NULL)
dev.control(displaylist="enable")
par(mar=c(4,6,0.1,0))

plot_f <- funnel(full_model, 
      yaxis="seinv", # Inverse of standard error (precision) as the y axis
      level = c(90, 95, 99),  # levels of statistical significance highlighted 
      shade = c("white", "gray75", "gray55", "gray40"), # shades for different levels of statistical significance
      legend = TRUE, # display legend
      ylab="Precision (1/SE)", 
      cex.lab=1.75, 
      digits=2, 
      ylim=c(0.84,1.02),
      xlim=c(-6, 6),
      cex=2,
      pch=21,
      col=dat$Study_ID)

p_5A <- recordPlot(plot_f)
invisible(dev.off())

Figure 5B

full_model_egger <- run_model(dat, ~ - 1 +
                      I(sqrt(1/N_tilde)) +  
                      scale(Publication_year) + 
                      scale(Temperature_in_Celsius) +
                      scale(Length_cooking_time_in_s) +
                      scale(PFAS_carbon_chain) +
                      scale(log(Ratio_liquid_fish))) # Model to get predictions


pred_egger<-predict.rma(full_model_egger, addx=TRUE, newmods=cbind(sqrt(1/dat$N_tilde),0,0,0 ,0, 0)) 
pred_egger<-as.data.frame(pred_egger)
pred_egger$SE_eff_N=pred_egger$X.I.sqrt.1.N_tilde..
pred_egger<- pred_egger %>% mutate(N_tilde = ((1/X.I.sqrt.1.N_tilde..)^2), lnRR = 0) 

p_5B<-ggplot(dat,aes(x = sqrt(1/N_tilde), y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_egger, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_egger,aes(y = pred), size = 1.5, color="orangered2")+  

       labs(x = "Standard error", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 20, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.position="none",
          panel.border=element_rect(colour="black", fill=NA, size=1.2))+
  xlim(0.18,1)

Figure 5C

full_model_pub <- run_model(dat, ~ - 1 +
                      scale(I(sqrt(1/N_tilde))) +  
                      Publication_year + 
                      scale(Temperature_in_Celsius) +
                      scale(Length_cooking_time_in_s) +
                      scale(PFAS_carbon_chain) +
                      scale(log(Ratio_liquid_fish))) # Model to get predictions


pred_pub<-predict.rma(full_model_pub, addx=TRUE, newmods=cbind(0,dat$Publication_year,0,0 ,0, 0)) 
pred_pub<-as.data.frame(pred_pub)
pred_pub$Publication_year=pred_pub$X.Publication_year
pred_pub<-left_join(dat, pred_pub, by="Publication_year")



p_5C<-ggplot(dat,aes(x = Publication_year, y = lnRR)) +
  
       geom_point(aes(size=(1/sqrt(var_lnRR))), shape=21, alpha=0.8, fill="gray75") +
  
       geom_ribbon(data=pred_pub, aes(ymin = ci.lb, ymax = ci.ub), alpha = 0.25, fill="orangered") +
       geom_line(data=pred_pub,aes(y = pred), size = 1.5, color="orangered2")+  

       labs(x = "Publication year", y = "lnRR", size = "Precison (1/SE)") + 
  scale_size_continuous(range=c(1,10))+
  theme_bw() +
  geom_hline(yintercept = 0,linetype = 2, colour = "black",alpha=0.5)+   # horizontal line at lnRR = 0
  theme(text = element_text(size = 20, colour = "black", hjust = 0.5), # change font sizes and legend position
          legend.text=element_text(size=14),
          legend.position=c(1,0), 
          legend.justification = c(1,0),
          legend.background = element_blank(), 
          legend.direction="vertical",
          legend.title = element_text(size=15), 
          panel.border=element_rect(colour="black", fill=NA, size=1.2))  +
   scale_x_continuous(breaks=c(2008, 2010, 2012, 2014, 2016, 2018 ,2020))

Combine plots

(ggdraw(p_5A) + ggdraw(p_5B) + ggdraw(p_5C) + plot_annotation(tag_levels = "A"))

Software and packages versions

sessionInfo()
## R version 4.1.0 (2021-05-18)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19042)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252   
## [3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C                      
## [5] LC_TIME=English_Australia.1252    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] cowplot_1.1.1         GGally_2.1.2          kableExtra_1.3.4     
##  [4] emmeans_1.7.2-9000003 patchwork_1.1.1       clubSandwich_0.5.3   
##  [7] ape_5.5               orchaRd_2.0           metaAidR_0.0.0.9000  
## [10] metafor_3.0-2         Matrix_1.3-4          here_1.0.1           
## [13] googlesheets4_1.0.0   forcats_0.5.1         stringr_1.4.0        
## [16] dplyr_1.0.7           purrr_0.3.4           readr_2.1.1          
## [19] tidyr_1.1.3           tibble_3.1.3          ggplot2_3.3.5        
## [22] tidyverse_1.3.1      
## 
## loaded via a namespace (and not attached):
##  [1] TH.data_1.0-10     googledrive_2.0.0  ggbeeswarm_0.6.0   colorspace_2.0-2  
##  [5] ellipsis_0.3.2     rprojroot_2.0.2    estimability_1.3   fs_1.5.0          
##  [9] rstudioapi_0.13    farver_2.1.0       fansi_0.5.0        mvtnorm_1.1-3     
## [13] lubridate_1.8.0    mathjaxr_1.4-0     xml2_1.3.3         codetools_0.2-18  
## [17] splines_4.1.0      knitr_1.37         jsonlite_1.7.2     broom_0.7.11      
## [21] dbplyr_2.1.1       compiler_4.1.0     httr_1.4.2         backports_1.4.1   
## [25] assertthat_0.2.1   gargle_1.2.0       cli_3.0.1          formatR_1.11      
## [29] htmltools_0.5.1.1  tools_4.1.0        coda_0.19-4        gtable_0.3.0      
## [33] glue_1.4.2         Rcpp_1.0.7         cellranger_1.1.0   jquerylib_0.1.4   
## [37] vctrs_0.3.8        svglite_2.0.0      nlme_3.1-152       xfun_0.29         
## [41] rvest_1.0.2        lifecycle_1.0.1    MASS_7.3-54        zoo_1.8-9         
## [45] scales_1.1.1       hms_1.1.1          parallel_4.1.0     sandwich_3.0-1    
## [49] RColorBrewer_1.1-2 yaml_2.2.1         sass_0.4.0         reshape_0.8.8     
## [53] stringi_1.7.6      highr_0.9          rlang_0.4.11       pkgconfig_2.0.3   
## [57] systemfonts_1.0.2  evaluate_0.14      lattice_0.20-44    labeling_0.4.2    
## [61] tidyselect_1.1.1   plyr_1.8.6         magrittr_2.0.1     bookdown_0.22     
## [65] R6_2.5.1           generics_0.1.1     multcomp_1.4-17    DBI_1.1.2         
## [69] pillar_1.6.5       haven_2.4.3        withr_2.4.3        survival_3.2-11   
## [73] modelr_0.1.8       crayon_1.4.2       utf8_1.2.2         tzdb_0.2.0        
## [77] rmarkdown_2.11     grid_4.1.0         readxl_1.3.1       rmdformats_1.0.2  
## [81] reprex_2.0.1       digest_0.6.27      webshot_0.5.2      xtable_1.8-4      
## [85] munsell_0.5.0      beeswarm_0.4.0     viridisLite_0.4.0  vipor_0.4.5       
## [89] bslib_0.2.5.1
LS0tDQp0aXRsZTogIlRoZXJtYWwgcHJvY2Vzc2luZyByZWR1Y2VzIFBGQVMgY29uY2VudHJhdGlvbnMgaW4gYmx1ZSBmb29kIOKAkyBBIHN5c3RlbWF0aWMgcmV2aWV3IGFuZCBtZXRhLWFuYWx5c2lzIg0KYXV0aG9yOiAiQ2F0aGFyaW5hIFZlbmRsLCBQYXRyaWNlIFBvdHRpZXIsIE1hdHRoZXcgVGF5bG9yLCBKZW5uaWZlciBCcmFldW5pZywgTWF0dGhldyBHaWJzb24sIERhbmllbCBIZXNzZWxzb24sIEcuIEdyZWdvcnkgTmVlbHksIE1hbGdvcnphdGEgTGFnaXN6LCBTaGluaWNoaSBOYWthZ2F3YSAiDQpkYXRlOiAibGF0ZXN0IHVwZGF0ZTogYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiAlWScpYCINCm91dHB1dDogDQogIHJtZGZvcm1hdHM6Om1hdGVyaWFsOg0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KIyAqKlBhY2thZ2VzIGFuZCBjdXN0b20gZnVuY3Rpb25zKioNCg0KYGBge3Igc2V0dXAsIGluY2x1ZGUgPSBGQUxTRX0NCiMga25pdHIgc2V0dGluZw0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KICBtZXNzYWdlID0gRkFMU0UsDQogIHdhcm5pbmcgPSBGQUxTRSwgDQogIHRpZHkgPSBUUlVFLA0KICBjYWNoZSA9IFRSVUUsIA0KICBlY2hvPVRSVUUNCikNCg0KIyB0aGlzIG5lZWRzIHRvIGJlIGluc3RhbGxlZCBmcm9tIGdpdGh1Yg0KI3JlbW90ZXM6Omluc3RhbGxfZ2l0aHViKCJydmxlbnRoL2VtbWVhbnMiLCBkZXBlbmRlbmNpZXMgPSBUUlVFLCBidWlsZF9vcHRzID0gIiIsIGZvcmNlPVQpICAjIE5vdGUgdGhhdCB0aGUgaW5zdGFsbGF0aW9uIG1heSBub3Qgd29yayBpZiB0aGUgZm9sZGVyIGlzIHN5bmNocm9uaXppbmcgd2l0aCBPbmVEcml2ZQ0KI2RldnRvb2xzOjppbnN0YWxsX2dpdGh1YigiZGFuaWVsMW5vYmxlL29yY2hhUmQiLCBmb3JjZSA9IFRSVUUsIGJ1aWxkX3ZpZ25ldHRlcyA9IFRSVUUpDQojZGV2dG9vbHM6Omluc3RhbGxfZ2l0aHViKCJkYW5pZWwxbm9ibGUvbWV0YUFpZFIiKQ0KYGBgDQoNCg0KVGhlIGBsblJSX2Z1bmNgIGZ1bmN0aW9uIGlzIGhlcmUgdXNlZCB0byBjYWxjdWxhdGUgYSBsb2cgcmVzcG9uc2UgcmF0aW8gKGxuUlIpIGFkanVzdGVkIGZvciBzbWFsbCBzYW1wbGUgc2l6ZXMuIEluIGFkZGl0aW9uLCB0aGlzIGZvcm11bGEgYWNjb3VudHMgZm9yIGNvcnJlbGF0ZWQgc2FtcGxlcy4gDQpGb3IgbW9yZSBkZXRhaWxzLCBzZWUgKkRvbmNhc3RlciBhbmQgU3Bha2UgKDIwMTgpIENvcnJlY3Rpb24gZm9yIGJpYXMgaW4gbWV0YS1hbmFseXNpcyBvZiBsaXR0bGUtcmVwbGljYXRlZCBzdHVkaWVzLiBNZXRob2RzIGluIEVjb2xvZ3kgYW5kIEV2b2x1dGlvbjsgOTo2MzQtNjQ0Kg0KDQpgYGB7cn0NCiMgcGFja2FnZXMNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShnb29nbGVzaGVldHM0KQ0KbGlicmFyeShoZXJlKQ0KbGlicmFyeShtZXRhZm9yKSANCmxpYnJhcnkobWV0YUFpZFIpICMgc2VlIGEgbm90ZSBhYm92ZQ0KbGlicmFyeShvcmNoYVJkKSAjIHNlZSBhIG5vdGUgYWJvdmUNCmxpYnJhcnkoYXBlKQ0KbGlicmFyeShjbHViU2FuZHdpY2gpDQpsaWJyYXJ5KG1ldGFBaWRSKQ0KbGlicmFyeShwYXRjaHdvcmspDQpsaWJyYXJ5KGVtbWVhbnMpICMgc2VlIGEgbm90ZSBhYm92ZQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShHR2FsbHkpDQpsaWJyYXJ5KGNvd3Bsb3QpDQpsaWJyYXJ5KGdyRGV2aWNlcykgIyByZXFpcmVkIGZvciB1c2luZyBiYXNlIGFuZCBnZ3Bsb3RzIHRvZ2V0aGVyDQoNCiMgQmVsb3cgaXMgdGhlIGN1c3RvbSBmdW5jdGlvbiB0byBjYWxjdWxhdGUgdGhlIGxuUlIgDQpsblJSX2Z1bmMgPC0gZnVuY3Rpb24oTWMsIE5jLCBNZSwgTmUsIGFDVjJjLCBhQ1YyZSl7DQogIGxuUlIgPC0gbG9nKE1lL01jKSArIA0KICAgICAgICAwLjUgKiAoKGFDVjJlL05lKSAtIChhQ1YyYy9OYykpCQ0KICBsblJSDQogIH0NCg0KIyBjYWxjdWxhdGluZyBsblJSJ3Mgc2FtcGxpbmcgdmFyaWFuY2UgZnJvbSBpbmRlcGVuZGVudCBkZXNpZ25zDQp2YXJfbG5SUl9pbmQgPC0gZnVuY3Rpb24oTWMsIE5jLCBNZSwgTmUsIGFDVjJjLCBhQ1YyZSl7DQogIA0KICB2YXJfbG5SUiA8LSAoYUNWMmMvTmMpICsgKGFDVjJlL05lKSANCiAgDQogIHZhcl9sblJSDQp9DQoNCiMgY2FsY3VsYXRpbmcgbG5SUidzIHNhbXBsaW5nIHZhcmlhbmNlIGZyb20gZGVwZW5kZW50IGRlc2lnbnMNCnZhcl9sblJSX2RlcCA8LSBmdW5jdGlvbihNYywgTmMsIE1lLCBOZSwgYUNWMmMsIGFDVjJlLCByaG8gPSAwLjUpew0KICB2YXJfbG5SUiA8LSAoYUNWMmMvTmMpICsgKGFDVjJlL05lKSAtIA0KICAgICAgICAgMiAqIHJobyAqICgoYUNWMmMqYUNWMmUpL3NxcnQoTmMqTmUpKSANCiAgDQogIHZhcl9sblJSDQp9DQoNCiMgTWM6IENvbmNlbnRyYXRpb24gb2YgUEZBUyBvZiB0aGUgcmF3IChjb250cm9sKSBzYW1wbGUNCiMgTmM6IFNhbXBsZSBzaXplIG9mIHRoZSByYXcgKGNvbnRyb2wpIHNhbXBsZQ0KIyBNZTogQ29uY2VudHJhdGlvbiBvZiBQRkFTIG9mIHRoZSBjb29rZWQgKGV4cGVyaW1lbnRhbCkgc2FtcGxlDQojIE5lOiBTYW1wbGUgc2l6ZSBvZiB0aGUgY29va2VkIChleHBlcmltZW50YWwpIHNhbXBsZSANCiMgYUNWMmM6IE1lYW4gY29lZmZpY2llbnQgb2YgdmFyaWF0aW9uIG9mIHRoZSByYXcgKGNvbnRyb2wpIHNhbXBsZXMNCiMgYUNWMmU6IE1lYW4gY29lZmZpY2llbnQgb2YgdmFyaWF0aW9uIG9mIHRoZSBjb29rZWQgKGV4cGVyaW1lbnRhbCkgc2FtcGxlcw0KDQoNCmBgYA0KDQojICoqRGF0YSBpbXBvcnQgYW5kIHByb2Nlc3NpbmcqKg0KDQojIyBJbXBvcnQgYW5kIHByb2Nlc3MgcmF3IGRhdGEgDQoNCmBgYHtyfQ0KcHJvY2Vzc2VkX2RhdGEgPC0gcmVhZC5jc3YoaGVyZSgiZGF0YSIsICJSYXdfZGF0YS5jc3YiKSkgDQoNCmRhdCA8LSBwcm9jZXNzZWRfZGF0YSAlPiUgbXV0YXRlKFNEYyA9IGlmZWxzZShTY190ZWNobmljYWxfYmlvbG9naWNhbCA9PSAiYmlvbG9naWNhbCIsIFNjLCBOQSksICMgQ2FsY3VsYXRlIHRoZSBTRCBvZiBiaW9sb2dpY2FsIHJlcGxpY2F0ZXMgZm9yIGNvbnRyb2wgc2FtcGxlcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RlID0gaWZlbHNlKFNlX3RlY2huaWNhbF9iaW9sb2dpY2FsID09ICJiaW9sb2dpY2FsIiwgU2UsIE5BKSkgIyBDYWxjdWxhdGUgdGhlIFNEIG9mIGJpb2xvZ2ljYWwgcmVwbGljYXRlcyBmb3IgZXhwZXJpbWVudGFsIHNhbXBsZXMNCg0KZGF0IDwtIGRhdCAlPiUgZmlsdGVyKFNwZWNpZXNfU2NpZW50aWZpYyAhPSAiPyIpICMgUmVtb3ZlIHNwZWNpZXMgd2l0aG91dCBzcGVjaWVzIG5hbWVzDQpkYXQgPC0gZGF0ICU+JSBmaWx0ZXIoUEZBU190eXBlICE9ICJQRk9TX1RvdGFsIikgIyBSZW1vdmUgc3BlY2llcyB3aXRob3V0IHNwZWNpZXMgbmFtZXMNCg0KDQojIyMjIFJhdGlvX2xpcXVpZF9maXNoIHdpdGggIjAiIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkNCmRhdDwtZGF0ICU+JSBtdXRhdGUoUmF0aW9fbGlxdWlkX2Zpc2hfMCA9IGlmZWxzZShDb29raW5nX0NhdGVnb3J5ID09Ik5vIGxpcXVpZCIsIDAsIFJhdGlvX2xpcXVpZF9maXNoKSkgIyBBZGQgYSAwIHdoZW4gdGhlIGNvb2tpbmcgY2F0ZWdvcnkgaXMgIk5vIGxpcXVpZCIsIG90aGVyd2lzZSBrZWVwIHRoZSBzYW1lIHZhbHVlIG9mIFJhdGlvX2xpcXVpZF9maXNoDQoNCiMgdGFraW5nIG91dCBkYXRhIHdpdGhvdXQgc3BlY2llcyBpbmZvcm1hdGlvbg0KDQoNCiMgYXJyYW5nZShzZWxlY3QoZGF0LCBDb29raW5nX0NhdGVnb3J5LCBSYXRpb19saXF1aWRfZmlzaCwgUmF0aW9fbGlxdWlkX2Zpc2hfMCksIENvb2tpbmdfQ2F0ZWdvcnkpICMgQ2hlY2tpbmcgZXZlcnl0aGluZyBpcyBmaW5lDQoNCmRhdCRUZW1wZXJhdHVyZV9pbl9DZWxzaXVzW2RhdCRUZW1wZXJhdHVyZV9pbl9DZWxzaXVzPT0iPyJdIDwtIE5BICMgUmVwbGFjZSAiPyIgYnkgbWlzc2luZyB2YWx1ZXMNCmRhdCRUZW1wZXJhdHVyZV9pbl9DZWxzaXVzIDwtIGFzLm51bWVyaWMoZGF0JFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICMgQ29udmVydCBpbnRlZ2VyIHRvIG51bWVyaWMNCg0KZGF0JFN0dWR5X0lEW2RhdCRFZmZlY3RfSUQ9PSJFNTU3Il0gIyBUd28gZWZmZWN0IHNpemVzIGhhdmUgdGhlIHNhbWUgdW5pcXVlIGlkZW50aWZpZXINCmRhdCRFZmZlY3RfSURbZGF0JEVmZmVjdF9JRD09IkU1NTciJmRhdCRTdHVkeV9JRD09IkYwMTMiXTwtICJFNjEzIg0KDQprYWJsZShkYXQsICJodG1sIikgJT4lIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBwb3NpdGlvbiA9ICJsZWZ0IikgJT4lIHNjcm9sbF9ib3god2lkdGggPSAiMTAwJSIsIGhlaWdodCA9ICI1MDBweCIpDQpgYGANCg0KDQojIyBJbXBvcnQgcGh5bG9nZW5ldGljIGluZm9ybWF0aW9uIGFuZCBjYWxjdWxhdGUgcGh5bG9nZW5ldGljIHZhcmlhbmNlLWNvdmFyaWFuY2UgbWF0cml4IA0KDQpUaGUgcGh5bG9nZW5ldGljIHRyZWUgd2FzIGdlbmVyYXRlZCBpbiB0aGUgYHRyZWVfY29va2VkX2Zpc2hfTUEuUm1kYCBkb2N1bWVudCANCg0KYGBge3IsIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aCA9IDh9DQoNCnRyZWUgPC0gcmVhZC50cmVlKGhlcmUoImRhdGEiLCAicGh5bG9nZW5ldGljX3RyZWUudHJlIikpICMgSW1wb3J0IHBoeWxvZ2VuZXRpYyB0cmVlIChzZWUgdHJlZV9jb29rZWRfZmlzaF9NQS5SbWQgZm9yIG1vcmUgZGV0YWlscykgDQoNCnRyZWUgPC0gY29tcHV0ZS5icmxlbih0cmVlKSAjIEdlbmVyYXRlIGJyYW5jaCBsZW5ndGhzIA0KDQpjb3JfdHJlZSA8LSB2Y3YodHJlZSxjb3JyID0gVCkgIyBHZW5lcmF0ZSBwaHlsb2dlbmV0aWMgdmFyaWFuY2UtY292YXJpYW5jZSBtYXRyaXggDQoNCmRhdCRQaHlsb2dlbnkgPC0gYXMuZmFjdG9yKHN0cl9yZXBsYWNlKGRhdCRTcGVjaWVzX1NjaWVudGlmaWMsICIgIiwgIl8iKSkgIyBBZGQgdGhlIGBwaHlsb2dlbnlgIGNvbHVtbiB0byB0aGUgZGF0YSBmcmFtZQ0KDQpjb2xuYW1lcyhjb3JfdHJlZSkgJWluJSBkYXQkUGh5bG9nZW55ICMgQ2hlY2sgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiB0aXAgbmFtZXMgYW5kIGRhdGEgZnJhbWUNCg0KIyBjaGVja2luZyBhbGwgc3BlY2llcyBhcmUgaW4gdGhlIGRhdGENCiNtYXRjaCh1bmlxdWUoZGF0JFBoeWxvZ2VueSksY29sbmFtZXMoY29yX3RyZWUpKQ0KbWF0Y2goZGF0JFBoeWxvZ2VueSwgY29sbmFtZXMoY29yX3RyZWUpKQ0KDQojIHBsb3R0aW5nIHRyZWUNCnBsb3QodHJlZSkNCmBgYA0KDQoNCg0KIyMgQ2FsY3VsYXRlIGVmZmVjdCBzaXplcyANCg0KVGhlIGF2ZXJhZ2UgY29lZmZpY2llbnQgb2YgdmFyaWF0aW9uIGluIFBGQVMgY29uY2VudHJhdGlvbiB3YXMgY2FsY3VsYXRlZCBmb3IgZWFjaCBzdHVkeSBhbmQgdHJlYXRtZW50LCBhY2NvcmRpbmcgdG8gKkRvbmNhc3RlciBhbmQgU3Bha2UgKDIwMTgpIENvcnJlY3Rpb24gZm9yIGJpYXMgaW4gbWV0YS1hbmFseXNpcyBvZiBsaXR0bGUtcmVwbGljYXRlZCBzdHVkaWVzLiBNZXRob2RzIGluIEVjb2xvZ3kgYW5kIEV2b2x1dGlvbjsgOTo2MzQtNjQ0Ki4gDQpUaGVuLCB0aGVzZSB2YWx1ZXMgd2VyZSBhdmVyYWdlZCBhY3Jvc3Mgc3R1ZGllcyBhbmQgdXNlZCB0byBjYWxjdWxhdGUgdGhlIGxuUlIgY29ycmVjdGVkIGZvciBzbWFsbCBzYW1wbGUgc2l6ZXMgKGZvciBmb3JtdWxhLCBzZWUgdGhlIGBsblJSX2Z1bmNgIGFib3ZlKQ0KDQpgYGB7cn0NCg0KZGF0JFN0dWR5X0lEIDwtIGFzLmZhY3RvcihkYXQkU3R1ZHlfSUQpDQpkYXQkU0RlIDwtIGFzLm51bWVyaWMoZGF0JFNEZSkNCiMgQ2FsY3VsYXRlIHRoZSBzcXVhcmVkIGNvZWZmaWNpZW50IG9mIHZhcmlhdGlvbiBmb3IgY29udHJvbCBhbmQgZXhwZXJpbWVudGFsIGdyb3Vwcw0KYUNWMiA8LSBkYXQgJT4lIA0KICAgICAgICAgICAgICAgZ3JvdXBfYnkoU3R1ZHlfSUQpICU+JSAgIyBHcm91cCBieSBzdHVkeSANCiAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXNlKENWMmMgPSBtZWFuKChTRGMvTWMpXjIsIG5hLnJtID0gVCksICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENWMmUgPSBtZWFuKChTRGUvTWUpXjIsIG5hLnJtID0gVCkpICU+JSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZ3JvdXAoKSAlPiUgIyB1bmdyb3VwIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXNlKGFDVjJjID0gbWVhbihDVjJjLCBuYS5ybSA9IFQpLCAjIE1lYW4gQ1ZeMiBmb3IgZXhwIGFuZCBjb250cm9sIGdyb3VwcyBhY3Jvc3Mgc3R1ZGllcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNWMmUgPSBtZWFuKENWMmUsIG5hLnJtID0gVCkpIA0KDQpsblJSIDwtICAjIENhbGN1bGF0ZSBlZmZlY3Qgc2l6ZXMNCiAgICAgICAgICAgICAgICAgICAgbG5SUl9mdW5jKE1jID0gZGF0JE1jLCANCiAgICAgICAgICAgICAgICAgICAgTmMgPSBkYXQkTmMsIA0KICAgICAgICAgICAgICAgICAgICBNZSA9IGRhdCRNZSwgDQogICAgICAgICAgICAgICAgICAgIE5lID0gZGF0JE5lLCANCiAgICAgICAgICAgICAgICAgICAgYUNWMmMgPSBhQ1YyW1sxXV0sIA0KICAgICAgICAgICAgICAgICAgICBhQ1YyZSA9IGFDVjJbWzJdXSkNCg0KDQoNCg0KdmFyX2xuUlIgPC0gaWZlbHNlKGRhdCREZXNpZ24gPT0gIkRlcGVuZGVudCIsICMgQ2FsY3VsYXRlIHNhbXBsaW5nIHZhcmlhbmNlDQogICAgICAgICAgICAgICAgICAgIHZhcl9sblJSX2RlcChNYyA9IGRhdCRNYywgDQogICAgICAgICAgICAgICAgICAgIE5jID0gZGF0JE5jLCANCiAgICAgICAgICAgICAgICAgICAgTWUgPSBkYXQkTWUsIA0KICAgICAgICAgICAgICAgICAgICBOZSA9IGRhdCROZSwgDQogICAgICAgICAgICAgICAgICAgIGFDVjJjID0gYUNWMltbMV1dLCANCiAgICAgICAgICAgICAgICAgICAgYUNWMmUgPSBhQ1YyW1syXV0sDQogICAgICAgICAgICAgICAgICAgIHJobyA9IDAuNSksIA0KICAgICAgICAgICAgICAgICAgICB2YXJfbG5SUl9pbmQoTWMgPSBkYXQkTWMsIA0KICAgICAgICAgICAgICAgICAgICBOYyA9IGRhdCROYywgDQogICAgICAgICAgICAgICAgICAgIE1lID0gZGF0JE1lLCANCiAgICAgICAgICAgICAgICAgICAgTmUgPSBkYXQkTmUsIA0KICAgICAgICAgICAgICAgICAgICBhQ1YyYyA9IGFDVjJbWzFdXSwgDQogICAgICAgICAgICAgICAgICAgIGFDVjJlID0gYUNWMltbMl1dKSkgDQoNCg0KDQpkYXQgPC0gZGF0ICU+JSANCiAgICAgICAgICAgICBtdXRhdGUoTl90aWxkZSA9IChOYypOZSkvKE5jICsgTmUpKSAjIGdldHRpbmcgZWZmZWN0aXZlIHNhbXBsZSBzaXplIA0KDQpkYXQgPC0gY2JpbmQoZGF0LCBsblJSLCB2YXJfbG5SUikgIyBNZXJnZSBlZmZlY3Qgc2l6ZXMgd2l0aCB0aGUgZGF0YSBmcmFtZQ0KDQpWQ1ZfbG5SUiA8LSBtYWtlX1ZDVl9tYXRyaXgoZGF0LCBWID0gInZhcl9sblJSIiwgY2x1c3RlciA9ICJDb2hvcnRfSUQiLCBvYnMgPSAiRWZmZWN0X0lEIiwgcmhvID0gMC41KSAjIEJlY2F1c2Ugc29tZSBlZmZlY3Qgc2l6ZXMgc2hhcmUgdGhlIHNhbWUgY29udHJvbCwgd2UgZ2VuZXJhdGVkIGEgdmFyaWFuY2UtY292YXJpYW5jZSBtYXRyaXggdG8gYWNjb3VudCBmb3IgY29ycmVsYXRlZCBlcnJvcnMgKGkuZS4gZWZmZWN0aXZlbHkgZGl2aWRpbmcgdGhlIHdlaWdodCBvZiB0aGUgY29ycmVsYXRlZCBlc3RpbWF0ZXMgYnkgaGFsZikNCg0KYGBgDQoNCiMjIERpc3RyaWJ1dGlvbiBvZiBlZmZlY3Qgc2l6ZXMgDQoNCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xNX0NCiMgbWVhbiANCmdncGxvdChkYXQsIGFlcyh4PWxuUlIpKSsgZ2VvbV9oaXN0b2dyYW0oZmlsbCA9ICJzYWxtb24iLCBjb2wgPSAiYmxhY2siLCBiaW53aWR0aCA9IDAuMikgKyB0aGVtZV9jbGFzc2ljKCkNCg0KIyB2YXJpYW5jZQ0KZ2dwbG90KGRhdCwgYWVzKHg9dmFyX2xuUlIpKSsgZ2VvbV9oaXN0b2dyYW0oZmlsbCA9ICJzYWxtb24iLCBjb2wgPSAiYmxhY2siLCBiaW53aWR0aCA9IDAuMDUpICsgdGhlbWVfY2xhc3NpYygpDQoNCiMgbG9nIHZhcmlhbmNlDQpnZ3Bsb3QoZGF0LCBhZXMoeD12YXJfbG5SUikpKyBnZW9tX2hpc3RvZ3JhbShmaWxsID0gInNhbG1vbiIsIGNvbCA9ICJibGFjayIsIGJpbndpZHRoID0gMC4wNSkgKyBzY2FsZV94X2xvZzEwKCkrdGhlbWVfY2xhc3NpYygpDQoNCmBgYA0KDQojICoqU2FtcGxlIHNpemVzKioNCg0KIyMgVGFibGUgb2Ygc2FtcGxlIHNpemVzIA0KDQpgYGB7cn0NCmRhdCAlPiUNCiAgICAgICBzdW1tYXJpc2UoICMgQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgZWZmZWN0IHNpemVzLCBzdHVkaWVzIGFuZCBzcGVjaWVzIGZvciB0aGUgbWFpbiBjYXRlZ29yaWNhbCB2YXJpYWJsZXMNCiAgICAgICAgICAgICAgICAgYFN0dWRpZXNgID0gbl9kaXN0aW5jdChTdHVkeV9JRCksDQogICAgICAgICAgICAgICAgIGBTcGVjaWVzYCA9IG5fZGlzdGluY3QoU3BlY2llc19jb21tb24pLA0KICAgICAgICAgICAgICAgICBgUEZBUyB0eXBlYCA9IG5fZGlzdGluY3QoUEZBU190eXBlKSwNCiAgICAgICAgICAgICAgICAgYENvaG9ydHNgID0gbl9kaXN0aW5jdChDb2hvcnRfSUQpLA0KICAgICAgICAgICAgICAgICBgRWZmZWN0IHNpemVzYCA9IG5fZGlzdGluY3QoRWZmZWN0X0lEKSwNCiAgICANCiAgICAgICAgICAgICAgICAgYEVmZmVjdCBzaXplcyAoT2lsLWJhc2VkKWAgPSBuX2Rpc3RpbmN0KEVmZmVjdF9JRFtDb29raW5nX0NhdGVnb3J5PT0ib2lsLWJhc2VkIl0pLA0KICAgICAgICAgICAgICAgICBgU3R1ZGllcyAoT2lsLWJhc2VkKWAgPSBuX2Rpc3RpbmN0KFN0dWR5X0lEW0Nvb2tpbmdfQ2F0ZWdvcnk9PSJvaWwtYmFzZWQiXSksDQogICAgICAgICAgICAgICAgIGBTcGVjaWVzIChPaWwtYmFzZWQpYCA9IG5fZGlzdGluY3QoU3BlY2llc19jb21tb25bQ29va2luZ19DYXRlZ29yeT09Im9pbC1iYXNlZCJdKSwNCg0KICAgICAgICAgICAgICAgICBgRWZmZWN0IHNpemVzIChXYXRlci1iYXNlZClgID0gbl9kaXN0aW5jdChFZmZlY3RfSURbQ29va2luZ19DYXRlZ29yeT09IndhdGVyLWJhc2VkIl0pLA0KICAgICAgICAgICAgICAgICBgU3R1ZGllcyAoV2F0ZXItYmFzZWQpYCA9IG5fZGlzdGluY3QoU3R1ZHlfSURbQ29va2luZ19DYXRlZ29yeT09IndhdGVyLWJhc2VkIl0pLA0KICAgICAgICAgICAgICAgICBgU3BlY2llcyAoV2F0ZXItYmFzZWQpYCA9IG5fZGlzdGluY3QoU3BlY2llc19jb21tb25bQ29va2luZ19DYXRlZ29yeT09IndhdGVyLWJhc2VkIl0pLA0KDQogICAgICAgICAgICAgICAgIGBFZmZlY3Qgc2l6ZXMgKE5vIGxpcXVpZClgID0gbl9kaXN0aW5jdChFZmZlY3RfSURbQ29va2luZ19DYXRlZ29yeT09Ik5vIGxpcXVpZCJdKSwNCiAgICAgICAgICAgICAgICAgYFN0dWRpZXMgKE5vIGxpcXVpZClgID0gbl9kaXN0aW5jdChTdHVkeV9JRFtDb29raW5nX0NhdGVnb3J5PT0iTm8gbGlxdWlkIl0pLA0KICAgICAgICAgICAgICAgICBgU3BlY2llcyAoTm8gbGlxdWlkKWAgPSBuX2Rpc3RpbmN0KFNwZWNpZXNfY29tbW9uW0Nvb2tpbmdfQ2F0ZWdvcnk9PSJObyBsaXF1aWQiXSksKSAtPiB0YWJsZV9zYW1wbGVfc2l6ZXMNCg0KdGFibGVfc2FtcGxlX3NpemVzPC10KHRhYmxlX3NhbXBsZV9zaXplcykNCmNvbG5hbWVzKHRhYmxlX3NhbXBsZV9zaXplcyk8LSJuIChzYW1wbGUgc2l6ZSkiDQprYWJsZSh0YWJsZV9zYW1wbGVfc2l6ZXMpICU+JSBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb249ImxlZnQiKQ0KYGBgDQoNCiMjIFN1bW1hcnkgb2YgdGhlIGRhdGFzZXQgDQoNCmBgYHtyfQ0Ka2FibGUoc3VtbWFyeShkYXQpLCAiaHRtbCIpICU+JSBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb24gPSAibGVmdCIpICU+JSANCiAgICBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiLCBoZWlnaHQgPSAiNTAwcHgiKQ0KYGBgDQoNCg0KIyAqKkludGVyY2VwdCBtZXRhLWFuYWx5dGljYWwgbW9kZWwqKg0KDQojIyBEZXRlcm1pbmUgdGhlIHJhbmRvbSBlZmZlY3Qgc3RydWN0dXJlDQoNCmBDb2hvcnRfSURgIGFuZCBgUGh5bG9nZW55YCBleHBsYWluZWQgdmlydHVhbGx5IG5vIHZhcmlhbmNlIGluIHRoZSBtb2RlbC4gSGVuY2UsIHRoZXkgd2FzIHJlbW92ZWQgZnJvbSB0aGUgbW9kZWwuIEFsbCB0aGUgb3RoZXIgcmFuZG9tIGVmZmVjdHMgZXhwbGFpbmVkIHNpZ25pZmljYW50IHZhcmlhbmNlIGFuZCB3ZXJlIGtlcHQgaW4gc3Vic2VxdWVudCBtb2RlbHMgDQoNCmBgYHtyfQ0KDQpNQV9hbGxfcmFuZF9lZmZlY3RzIDwtIHJtYS5tdihsblJSLCBWQ1ZfbG5SUiwgIyBBZGQgYFZDVl9sblJSYCB0byBhY2NvdW50IGZvciBjb3JyZWxhdGVkIGVycm9ycyBlcnJvcnMgYmV0d2VlbiBjb2hvcnRzIChzaGFyZWRfY29udHJvbHMpDQogICAgICAgICAgICAgIHJhbmRvbSA9IGxpc3QofjF8U3R1ZHlfSUQsICMgSWRlbnRpdHkgb2YgdGhlIHN0dWR5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfjF8UGh5bG9nZW55LCAjIFBoeWxvZ2VuZXRpYyBjb3JyZWxhdGlvbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4xfENvaG9ydF9JRCwgIyBJZGVudGl0eSBvZiB0aGUgY29ob3J0IChzaGFyZWQgY29udHJvbHMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfjF8U3BlY2llc19jb21tb24sICMgTm9uLXBoeWxvZ2VuZXRpYyBjb3JyZWxhdGlvbiBiZXR3ZWVuIHNwZWNpZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+MXxQRkFTX3R5cGUsICMgVHlwZSBvZiBQRkFTIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4xfEVmZmVjdF9JRCksICMgRWZmZWN0IHNpemUgaWRlbnRpdHkgDQogICAgICAgICAgICAgIFI9IGxpc3QoUGh5bG9nZW55ID0gY29yX3RyZWUpLCAjIEFzc2lnbiB0aGUgJ1BoeWxvZ2VueScgYXJndW1lbnQgdG8gdGhlIHBoeWxvZ2VuZXRpYyB2YXJpYW5jZS1jb3ZhcmlhbmNlIG1hdHJpeA0KICAgICAgICAgICAgICB0ZXN0ID0gInQiLCANCiAgICAgICAgICAgICAgZGF0YSA9IGRhdCwNCiAgICAgICAgICAgICAgc3BhcnNlID0gVFJVRSkNCg0Kc3VtbWFyeShNQV9hbGxfcmFuZF9lZmZlY3RzKSAjIENvaG9ydCBJRCBkb2VzIG5vdCBleHBsYWluIGFueSB2YXJpYW5jZSANCg0KYGBgDQoNCg0KIyMgSW50ZXJjZXB0IG1ldGEtYW5hbHl0aWNhbCBtb2RlbCBhbmQgcGVyY2VudGFnZSBvZiBoZXRlcm9nZW5laXR5IA0KDQpgYGB7ciwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9OX0NCk1BX21vZGVsIDwtIHJtYS5tdihsblJSLCBWQ1ZfbG5SUiwgDQogICAgICAgICAgICAgIHJhbmRvbSA9IGxpc3QofjF8U3R1ZHlfSUQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfjF8U3BlY2llc19jb21tb24sICMgUmVtb3ZlZCBDb2hvcnRfSUQgYW5kIHBoeWxvZ2VueQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4xfFBGQVNfdHlwZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfjF8RWZmZWN0X0lEKSwgDQogICAgICAgICAgICAgIHRlc3QgPSAidCIsIA0KICAgICAgICAgICAgICBkYXRhID0gZGF0LA0KICAgICAgICAgICAgICBzcGFyc2UgPSBUUlVFKQ0KDQpzdW1tYXJ5KE1BX21vZGVsKQ0Kcm91bmQoaTJfbWwoTUFfbW9kZWwpLDIpICMgUGVyY2VudGFnZSBvZiBoZXRlcm9nZW5laXR5IGV4cGxhaW5lZCBieSBlYWNoIHJhbmRvbSBlZmZlY3QNCg0KDQpvcmNoYXJkX3Bsb3QoTUFfbW9kZWwsIG1vZCA9ICIxIiwgeGxhYiA9ICJsblJSIiwgYWxwaGE9MC40LCBkYXRhID0gZGF0LCBncm91cCA9ICJTdHVkeV9JRCIsIHRydW5rLnNpemU9OSwgYnJhbmNoLnNpemUgPSAyKSArICANCiAgICAgICAgICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSAiZGFya29yYW5nZSIpKyAjIGNoYW5nZSBjb2xvdXJzDQogICAgICAgICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz0iZGFya29yYW5nZSIpKyANCiAgICAgICAgICAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCA3KSkrICMgY2hhbmdlIHBvaW50IHNjYWxpbmcNCiAgICAgICAgICAgdGhlbWUocGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4zKSwgIyBib3JkZXIgYXJvdW5kIHRoZSBwbG90DQogICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzKSkgDQoNCnNhdmUoTUFfbW9kZWwsIE1BX2FsbF9yYW5kX2VmZmVjdHMsIGZpbGUgPSBoZXJlKCJSZGF0YSIsICJpbnRfTUFfbW9kZWxzLlJEYXRhIikpICMgc2F2ZSB0aGUgbW9kZWxzIA0KYGBgDQoNCg0KYGBge3IsIGluY2x1ZGUgPSBGQUxTRX0NCiMgQmVjYXVzZSB0aGUgbW9kZWxzIGFyZSBzYXZlZCwgdGhpcyBjb2RlIGNodW5rIGNhbiBiZSB1c2VkIHRvIHNlZSB0aGUgbW9kZWxzIG91dHB1dCB3aXRob3V0IHJ1bm5pbmcgdGhlIG1vZGVscw0KbG9hZChoZXJlKCJSZGF0YSIsICJpbnRfTUFfbW9kZWxzLlJEYXRhIikpDQoNCnN1bW1hcnkoTUFfYWxsX3JhbmRfZWZmZWN0cykNCnN1bW1hcnkoTUFfbW9kZWwpDQoNCmkyX21sKE1BX21vZGVsKSANCg0KYGBgDQoNCg0KIyAqKlNpbmdsZSBtb2RlcmF0b3IgbWV0YS1yZWdyZXNzaW9ucyoqDQoNCiMjIEZ1bmN0aW9uIHRvIHJ1biBhbGwgbW9kZWxzIHdpdGggdGhlIHNhbWUgc3RydWN0dXJlDQoNCmBgYHtyfQ0KcnVuX21vZGVsPC1mdW5jdGlvbihkYXRhLGZvcm11bGEpew0KICBkYXRhPC1hcy5kYXRhLmZyYW1lKGRhdGEpICMgY29udmVydCBkYXRhIHNldCBpbnRvIGEgZGF0YSBmcmFtZSB0byBjYWxjdWxhdGUgVkNWIG1hdHJpeCANCiAgVkNWPC1tYWtlX1ZDVl9tYXRyaXgoZGF0YQ0KICAgICAgICAgICAgICAgICAgICAgICAsIFYgPSAidmFyX2xuUlIiLCBjbHVzdGVyID0gIkNvaG9ydF9JRCIsIG9icyA9ICJFZmZlY3RfSUQiLCByaG8gPSAwLjUpICMgY3JlYXRlIFZDViBtYXRyaXggZm9yIHRoZSBzcGVjaWZpZWQgZGF0YQ0KICANCiAgcm1hLm12KGxuUlIsIFZDViwgIyBydW4gdGhlIG1vZGVsLCBhcyBkZXNjcmliZWQgZWFybGllcg0KICAgICAgICAgbW9kcz1mb3JtdWxhLA0KICAgICAgICAgcmFuZG9tID0gbGlzdCh+MXxTdHVkeV9JRCwNCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3BlY2llc19jb21tb24sIA0KICAgICAgICAgICAgICAgICAgICAgICB+MXxQRkFTX3R5cGUsIA0KICAgICAgICAgICAgICAgICAgICAgICB+MXxFZmZlY3RfSUQpLCANCiAgICAgICAgIHRlc3QgPSAidCIsIA0KICAgICAgICAgZGF0YSA9IGRhdGEsDQogICAgICAgICBzcGFyc2U9VFJVRSkgIyBNYWtlIHRoZSBtb2RlbCBydW4gZmFzdGVyDQp9DQoNCmBgYA0KDQoNCiMjIEZ1bmN0aW9ucyB0byBydW4gcGxvdHMgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUNCg0KYGBge3J9DQpwbG90X2NvbnRpbnVvdXM8LWZ1bmN0aW9uKGRhdGEsIG1vZGVsLCBtb2RlcmF0b3IsIHhsYWIpew0KDQpwcmVkPC1wcmVkaWN0LnJtYShtb2RlbCkNCg0KZGF0YSAlPiUgbXV0YXRlKGZpdD1wcmVkJHByZWQsIA0KICAgICAgICAgICAgICAgY2kubGI9cHJlZCRjaS5sYiwNCiAgICAgICAgICAgICAgIGNpLnViPXByZWQkY2kudWIsDQogICAgICAgICAgICAgICBwci5sYj1wcmVkJGNyLmxiLA0KICAgICAgICAgICAgICAgcHIudWI9cHJlZCRjci51YikgJT4lICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLCBtZWFuIHByZWRpY3Rpb25zIGFuZCBwcmVkaWN0aW9uIGludGVydmFscw0KZ2dwbG90KGFlcyh4ID0gbW9kZXJhdG9yLCB5ID0gbG5SUikpICsNCiAgICAgZ2VvbV9yaWJib24oYWVzKHltaW4gPSBwci5sYiwgeW1heCA9IHByLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IC4wNzUpICsgIyBTaGFkZWQgYXJlYSBmb3IgcHJlZGljdGlvbiBpbnRlcnZhbHMNCiAgICAgZ2VvbV9yaWJib24oYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IC4yKSArICMgU2hhZGVkIGFyZWEgZm9yIGNvbmZpZGVuY2UgaW50ZXJ2YWxzDQogICAgIGdlb21fcG9pbnQoYWVzKHNpemU9KDEvc3FydCh2YXJfbG5SUikpLCBmaWxsPUNvb2tpbmdfQ2F0ZWdvcnkpLCBzaGFwZT0yMSwgYWxwaGE9MC44KSArICMgUG9pbnRzIHNjYWxlZCBieSBwcmVjaXNpb24NCiAgICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIiM1NUM2NjdGRiIsICJnb2xkZW5yb2QyIiwgImRvZGdlcmJsdWUzIikpKw0KICAgICBnZW9tX2xpbmUoYWVzKHkgPSBmaXQpLCBzaXplID0gMS41KSsgICMgUmVncmVzc2lvbiBsaW5lDQogIGxhYnMoeCA9IHhsYWIsIHkgPSAibG5SUiIsIHNpemUgPSAiUHJlY2lzb24gKDEvU0UpIikgKw0KICB0aGVtZV9idygpICsNCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlPWMoMSw5KSkrICMgUG9pbnQgc2NhbGluZw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgICMgaG9yaXpvbnRhbCBsaW5lIGF0IGxuUlIgPSAwDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4LCBjb2xvdXIgPSAiYmxhY2siLCBoanVzdCA9IDAuNSksICMgY2hhbmdlIGZvbnQgc2l6ZXMgYW5kIGxlZ2VuZCBwb3NpdGlvbg0KICAgICAgICAgIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTE0KSwNCiAgICAgICAgICBsZWdlbmQucG9zaXRpb249YygwLDApLCANCiAgICAgICAgICBsZWdlbmQuanVzdGlmaWNhdGlvbiA9IGMoMCwwKSwNCiAgICAgICAgICBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwgDQogICAgICAgICAgbGVnZW5kLmRpcmVjdGlvbj0iaG9yaXpvbnRhbCIsDQogICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9MTUpLCANCiAgICAgICAgICBwYW5lbC5ib3JkZXI9ZWxlbWVudF9yZWN0KGNvbG91cj0iYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMikpDQp9DQoNCmBgYA0KDQoNCiMjIFNpbmdsZS1tb2RlcmF0b3IgbW9kZWxzIHsudGFic2V0IC50YWJzZXRfZmFkZSAudGFic2V0X3BpbGxzfSANCg0KQWxsIGNvbnRpbnVvdXMgdmFyaWFibGVzIHdlcmUgei10cmFuc2Zvcm1lZC4gDQoNCk5vdGUgdGhhdCBhbGwgYW5hbHlzZXMgaW52b2x2aW5nIHRoZSBsaXF1aWQvYW5pbWFsIHRpc3N1ZSByYXRpbyB3ZXJlIHJhbiBieSBjb25zaWRlcmluZyByYXRpbyB2YWx1ZXMgZm9yIHRoZSBuby1saXF1aWQgY29va2luZyBjYXRlZ29yeSBhcyBlaXRoZXIgIk5BIiBvciAiMCIuIFRoZSByZXN1bHRzIHByZXNlbnRlZCBpbiB0aGUgbWFudXNjcmlwdCBjb25zaWRlciB0aGUgcmF0aW8gdG8gYmUgMC4gDQoNCiMjIyBDb29raW5nIHRpbWUgDQoNCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9N30NCiMgTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zDQoNCnRpbWVfbW9kZWw8LXJ1bl9tb2RlbChkYXQsIH5zY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpKSAjIHotdHJhbnNmb3JtZWQNCiAgDQpzdW1tYXJ5KHRpbWVfbW9kZWwpDQpyMl9tbCh0aW1lX21vZGVsKSAjIEVzdGltYXRlIFIgc3F1YXJlZA0KDQojIFBsb3QNCmRhdC50aW1lPC1maWx0ZXIoZGF0LCBMZW5ndGhfY29va2luZ190aW1lX2luX3MhPSJOQSIpICMgTmVlZCB0byByZW1vdmUgdGhlIE5BcyBmcm9tIHRoZSBkYXRhDQpwbG90X2NvbnRpbnVvdXMoZGF0LnRpbWUsIHRpbWVfbW9kZWwsIGRhdC50aW1lJExlbmd0aF9jb29raW5nX3RpbWVfaW5fcywgIkNvb2tpbmcgdGltZSAocykiKQ0KYGBgDQoNCiMjIyBMaXF1aWQvYW5pbWFsIHRpc3N1ZSByYXRpbw0KDQojIyMjIFJhdGlvIGJldHdlZW4gbGlxdWlkIHZvbHVtZSBhbmQgdGlzc3VlIHNhbXBsZSwgd2l0aCBkcnkgY29va2luZyBjb2RlZCBhcyBgMGANCg0KYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD03fQ0KDQp2b2x1bWUwX21vZGVsPC1ydW5fbW9kZWwoZGF0LCB+c2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoXzArMSkpKSAjIGxvZ2dlZCBhbmQgei10cmFuc2Zvcm1lZCBhZnRlciBhZGRpbmcgMQ0KICANCnN1bW1hcnkodm9sdW1lMF9tb2RlbCkNCnIyX21sKHZvbHVtZTBfbW9kZWwpDQoNCiMgUGxvdA0KZGF0LnZvbHVtZTA8LWZpbHRlcihkYXQsIFJhdGlvX2xpcXVpZF9maXNoXzAhPSJOQSIpDQpwbG90X2NvbnRpbnVvdXMoZGF0LnZvbHVtZTAsIHZvbHVtZTBfbW9kZWwsIGxvZyhkYXQudm9sdW1lMCRSYXRpb19saXF1aWRfZmlzaF8wKzEpLCAibG4gKExpcXVpZCB2b2x1bWUgdG8gdGlzc3VlIHNhbXBsZSByYXRpbyArIDEpIikNCmBgYA0KDQojIyMjIFJhdGlvIGJldHdlZW4gbGlxdWlkIHZvbHVtZSBhbmQgdGlzc3VlIHNhbXBsZSwgd2l0aCBkcnkgY29va2luZyBjb2RlZCBhcyBgTkFgDQoNCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9N30NCiMgUmF0aW9fbGlxdWlkX2Zpc2gNCmRhdDwtZGF0ICU+JSBtdXRhdGUoUmF0aW9fbGlxdWlkX2Zpc2hfMCA9IGlmZWxzZShDb29raW5nX0NhdGVnb3J5ID09Ik5vIGxpcXVpZCIsIDAsIFJhdGlvX2xpcXVpZF9maXNoKSkgIyBBZGQgYSAwIHdoZW4gdGhlIGNvb2tpbmcgY2F0ZWdvcnkgaXMgIk5vIGxpcXVpZCIsIG90aGVyd2lzZSBrZWVwIHRoZSBzYW1lIHZhbHVlIG9mIFJhdGlvX2xpcXVpZF9maXNoDQoNCnZvbHVtZV9tb2RlbDwtcnVuX21vZGVsKGRhdCwgfnNjYWxlKGxvZyhSYXRpb19saXF1aWRfZmlzaCkpKSAjIGxvZ2dlZCBhbmQgei10cmFuc2Zvcm1lZA0KICANCnN1bW1hcnkodm9sdW1lX21vZGVsKQ0KcjJfbWwodm9sdW1lX21vZGVsKQ0KDQojIFBsb3QNCmRhdC52b2x1bWU8LWZpbHRlcihkYXQsIFJhdGlvX2xpcXVpZF9maXNoIT0iTkEiKQ0KcGxvdF9jb250aW51b3VzKGRhdC52b2x1bWUsIHZvbHVtZV9tb2RlbCwgbG9nKGRhdC52b2x1bWUkUmF0aW9fbGlxdWlkX2Zpc2gpLCAibG4gKExpcXVpZCB2b2x1bWUgdG8gdGlzc3VlIHNhbXBsZSByYXRpbykiKQ0KYGBgDQoNCg0KIyMjIENvb2tpbmcgdGVtcGVyYXR1cmUgDQoNCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9N30NCiMgVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cw0KDQp0ZW1wX21vZGVsPC1ydW5fbW9kZWwoZGF0LCB+c2NhbGUoVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cykpICMgei10cmFuc2Zvcm1lZCANCiAgDQpzdW1tYXJ5KHRlbXBfbW9kZWwpDQpyMl9tbCh0ZW1wX21vZGVsKQ0KDQojIFBsb3QNCmRhdC50ZW1wPC1maWx0ZXIoZGF0LCBUZW1wZXJhdHVyZV9pbl9DZWxzaXVzIT0iTkEiKQ0KcGxvdF9jb250aW51b3VzKGRhdC50ZW1wLCB0ZW1wX21vZGVsLCBkYXQudGVtcCRUZW1wZXJhdHVyZV9pbl9DZWxzaXVzLCAiQ29va2luZyB0ZW1wZXJhdHVyZSIpDQpgYGANCg0KIyMjIFBGQVMgY2FyYm9uIGNoYWluIGxlbmd0aCANCg0KYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD03fQ0KIyBQRkFTX2NhcmJvbl9jaGFpbg0KDQpQRkFTX21vZGVsPC1ydW5fbW9kZWwoZGF0LCB+UEZBU19jYXJib25fY2hhaW4pDQogIA0Kc3VtbWFyeShQRkFTX21vZGVsKQ0KcjJfbWwoUEZBU19tb2RlbCkNCg0KcGxvdF9jb250aW51b3VzKGRhdCwgUEZBU19tb2RlbCwgZGF0JFBGQVNfY2FyYm9uX2NoYWluLCAiUEZBUyBjYXJib24gY2hhaW4gbGVuZ3RoIikNCg0KYGBgDQoNCg0KIyMjIENvb2tpbmcgY2F0ZWdvcnkgDQoNCmBgYHtyLCBmaWcud2lkdGg9OSwgZmlnLmhlaWdodD02fQ0KIyBDb29raW5nX0NhdGVnb3J5DQoNCmNhdGVnb3J5X21vZGVsPC1ydW5fbW9kZWwoZGF0LCB+Q29va2luZ19DYXRlZ29yeS0xKQ0KICANCnN1bW1hcnkoY2F0ZWdvcnlfbW9kZWwpDQpyMl9tbChjYXRlZ29yeV9tb2RlbCkNCg0KIyBwbG90DQoNCm9yY2hhcmRfcGxvdChjYXRlZ29yeV9tb2RlbCwgbW9kID0gIkNvb2tpbmdfQ2F0ZWdvcnkiLCB4bGFiID0gImxuUlIiLCBhbHBoYT0wLjQsIGRhdGEgPSBkYXQsIGdyb3VwID0gIlN0dWR5X0lEIiwgdHJ1bmsuc2l6ZT05LCBicmFuY2guc2l6ZSA9IDIpICsgIA0KICAgICAgICAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoIiM1NUM2NjdGRiIsICJnb2xkZW5yb2QyIiwgImRvZGdlcmJsdWUzIikpKyAjIGNoYW5nZSBjb2xvdXJzDQogICAgICAgICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCIjNTVDNjY3RkYiLCAiZ29sZGVucm9kMiIsICJkb2RnZXJibHVlMyIpKSsgDQogICAgICAgICAgIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZSA9IGMoMSwgNykpKyAjIGNoYW5nZSBwb2ludCBzY2FsaW5nDQogICAgICAgICAgIHRoZW1lKHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMyksICMgYm9yZGVyIGFyb3VuZCB0aGUgcGxvdA0KICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksICMgY2hhbmdlIGZvbnQgc2l6ZXMNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMykpDQpgYGANCg0KDQojIyMgUGVyY2VudGFnZSBvZiBtb2lzdHVyZSBsb3NzDQoNClRoaXMgYW5hbHlzaXMgaXMgKmEgcG9zdGVyaW9yaSogYW5kIHdpbGwgb25seSBiZSBwcmVzZW50ZWQgaW4gc3VwcGxlbWVudC4gDQpgYGB7ciwgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTd9DQojIE1vaXN0dXJlX2xvc3NfaW5fcGVyY2VudA0KDQptb2lzdHVyZV9tb2RlbDwtcnVuX21vZGVsKGRhdCwgfnNjYWxlKE1vaXN0dXJlX2xvc3NfaW5fcGVyY2VudCkpDQogIA0Kc3VtbWFyeShtb2lzdHVyZV9tb2RlbCkNCnIyX21sKG1vaXN0dXJlX21vZGVsKQ0KDQojIFBsb3QNCmRhdC5tb2lzdHVyZTwtZmlsdGVyKGRhdCwgTW9pc3R1cmVfbG9zc19pbl9wZXJjZW50IT0iTkEiKQ0KcGxvdF9jb250aW51b3VzKGRhdC5tb2lzdHVyZSwgbW9pc3R1cmVfbW9kZWwsIGRhdC5tb2lzdHVyZSRNb2lzdHVyZV9sb3NzX2luX3BlcmNlbnQsICJQZXJjZW50YWdlIG9mIG1vaXN0dXJlIGxvc3MiKQ0KYGBgDQoNCg0KYGBge3J9DQpzYXZlKGNhdGVnb3J5X21vZGVsLCBQRkFTX21vZGVsLCB0ZW1wX21vZGVsLCB0aW1lX21vZGVsLCB2b2x1bWVfbW9kZWwsIHZvbHVtZTBfbW9kZWwsIG1vaXN0dXJlX21vZGVsLCBmaWxlID0gaGVyZSgiUmRhdGEiLCAic2luZ2xlX21vZF9tb2RlbHMuUkRhdGEiKSkgIyBTYXZlIG1vZGVscw0KYGBgDQoNCg0KYGBge3IsIGluY2x1ZGU9IEZBTFNFfQ0KbG9hZChoZXJlKCJSZGF0YSIsICJzaW5nbGVfbW9kX21vZGVscy5SRGF0YSIpKSAjIExvYWQgdGhlIG91dHB1dCBvZiB0aGUgbW9kZWxzIHRvIGF2b2lkIHJ1bm5pbmcgdGhlbSANCg0KIyBDb29raW5nIHRpbWUNCnN1bW1hcnkodGltZV9tb2RlbCkNCnIyX21sKHRpbWVfbW9kZWwpDQoNCiMgVm9sdW1lIG9mIGxpcXVpZA0Kc3VtbWFyeSh2b2x1bWVfbW9kZWwpDQpyMl9tbCh2b2x1bWVfbW9kZWwpDQoNCiMgVm9sdW1lIG9mIGxpcXVpZCwgd2l0aCBubyBsaXF1aWQgdGFrZW4gYXMgYDBgDQpzdW1tYXJ5KHZvbHVtZTBfbW9kZWwpDQpyMl9tbCh2b2x1bWUwX21vZGVsKQ0KDQojIENvb2tpbmcgdGVtcGVyYXR1cmUNCnN1bW1hcnkodGVtcF9tb2RlbCkNCnIyX21sKHRlbXBfbW9kZWwpDQoNCiMgUEZBUyBjYXJib24gY2hhaW4gbGVuZ3RoDQpzdW1tYXJ5KFBGQVNfbW9kZWwpDQpyMl9tbChQRkFTX21vZGVsKQ0KDQojIENvb2tpbmcgY2F0ZWdvcnkNCnN1bW1hcnkoY2F0ZWdvcnlfbW9kZWwpDQpyMl9tbChjYXRlZ29yeV9tb2RlbCkNCg0KIyBQZXJjZW50YWdlIG9mIG1vaXN0dXJlIGxvc3MNCnN1bW1hcnkobW9pc3R1cmVfbW9kZWwpDQpyMl9tbChtb2lzdHVyZV9tb2RlbCkNCmBgYA0KDQoNCiMjIw0KDQoNCiMgKipGdWxsIG1vZGVscyoqDQoNCiMjIEZ1bGwgbW9kZWwgd2l0aCBSYXRpb19saXF1aWRfZmlzaCBhcyBgMGAgZm9yIHRoZSBkcnkgY29va2luZyBjYXRlZ29yeQ0KDQpgYGB7cn0NCmZ1bGxfbW9kZWwwICA8LSBybWEubXYoeWkgPSBsblJSLCBWID0gVkNWX2xuUlIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHM9IH4xICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raW5nX0NhdGVnb3J5ICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShUZW1wZXJhdHVyZV9pbl9DZWxzaXVzKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUEZBU19jYXJib25fY2hhaW4pICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCsxKSksDQogICAgICAgICByYW5kb20gPSBsaXN0KH4xfFN0dWR5X0lELA0KICAgICAgICAgICAgICAgICAgICAgICB+MXxTcGVjaWVzX2NvbW1vbiwgDQogICAgICAgICAgICAgICAgICAgICAgIH4xfFBGQVNfdHlwZSwgDQogICAgICAgICAgICAgICAgICAgICAgIH4xfEVmZmVjdF9JRCksIA0KICAgICAgICAgdGVzdCA9ICJ0IiwgDQogICAgICAgICBkYXRhID0gZGF0LA0KICAgICAgICAgc3BhcnNlID0gVFJVRSkNCiAgICAgICAgICNidHQgPSBjKDE6MykpICMgdGVzdGluZyB0aGUgc2lnbmlmaWNhbmNlIG9mIGNvb2tpbmcgY2F0ZWdvcnkgLSB0ZXN0aW5nIGZpcnN0IDMgcmVncmVzc2lvbiBjb2VmZmljaWVudHMpIA0KDQpzdW1tYXJ5KGZ1bGxfbW9kZWwwKQ0KcjJfbWwoZnVsbF9tb2RlbDApDQoNCnNhdmUoZnVsbF9tb2RlbDAsIGZpbGUgPSBoZXJlKCJSZGF0YSIsICJmdWxsX21vZGVsLlJEYXRhIikpDQpgYGANCg0KDQojIyBGdWxsIG1vZGVsIHdpdGggUmF0aW9fbGlxdWlkX2Zpc2ggYXMgYE5BYCBmb3IgdGhlIGRyeSBjb29raW5nIGNhdGVnb3J5DQpgYGB7cn0NCg0KIyBUZXN0aW5nIGNvb2tpbmcgY2F0ZWdvcmllcyAgDQpmdWxsX21vZGVsICA8LSBybWEubXYoeWkgPSBsblJSLCBWID0gVkNWX2xuUlIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHM9IH4xICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raW5nX0NhdGVnb3J5ICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShUZW1wZXJhdHVyZV9pbl9DZWxzaXVzKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUEZBU19jYXJib25fY2hhaW4pICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2gpKSwNCiAgICAgICAgIHJhbmRvbSA9IGxpc3QofjF8U3R1ZHlfSUQsDQogICAgICAgICAgICAgICAgICAgICAgIH4xfFNwZWNpZXNfY29tbW9uLCANCiAgICAgICAgICAgICAgICAgICAgICAgfjF8UEZBU190eXBlLCANCiAgICAgICAgICAgICAgICAgICAgICAgfjF8RWZmZWN0X0lEKSwgDQogICAgICAgICB0ZXN0ID0gInQiLCANCiAgICAgICAgIGRhdGEgPSBkYXQsDQogICAgICAgICBzcGFyc2UgPSBUUlVFKQ0KICAgICAgICAgI2J0dCA9IGMoMTozKSkgIyB0ZXN0aW5nIHRoZSBzaWduaWZpY2FuY2Ugb2YgY29va2luZyBjYXRlZ29yeSAtIHRlc3RpbmcgZmlyc3QgMyByZWdyZXNzaW9uIGNvZWZmaWNpZW50cykgDQoNCnN1bW1hcnkoZnVsbF9tb2RlbCkNCnIyX21sKGZ1bGxfbW9kZWwpDQoNCnNhdmUoZnVsbF9tb2RlbCwgZmlsZSA9IGhlcmUoIlJkYXRhIiwgImZ1bGxfbW9kZWwuUkRhdGEiKSkNCmBgYA0KDQoNCiMjIENoZWNrIGNvbGxpbmVhcml0eSBvZiBwcmVkaWN0b3JzIA0KDQpgYGB7ciwgZmlnLndpZHRoPTl9DQojIyBDaGVjayBmb3IgY29sbGluZXJhcml0eSAtIHNlZW1zIGZpbmUNCg0KdmlmKGZ1bGxfbW9kZWwpDQp2aWYoZnVsbF9tb2RlbDApDQoNCmRhdCAlPiUgc2VsZWN0KFRlbXBlcmF0dXJlX2luX0NlbHNpdXMsIExlbmd0aF9jb29raW5nX3RpbWVfaW5fcywgUEZBU19jYXJib25fY2hhaW4sIFJhdGlvX2xpcXVpZF9maXNoKSAlPiUgDQogIGdncGFpcnMoKSAjIEVzdGltYXRlIGNvcnJlbGF0aW9ucyBiZXR3ZWVuIHRoZSB2YXJpYWJsZXMNCmBgYA0KDQoNCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9DQoNCmxvYWQoaGVyZSgiUmRhdGEiLCAiZnVsbF9tb2RlbC5SRGF0YSIpKSAjIExvYWQgdGhlIG91dHB1dCBvZiB0aGUgZnVsbCBtb2RlbCB0byBhdm9pZCBydW5uaW5nIGl0DQoNCnN1bW1hcnkoZnVsbF9tb2RlbCkNCnN1bW1hcnkoZnVsbF9tb2RlbDApDQpgYGANCg0KDQoNCiMgKipDb25kaXRpb25hbCBhbmFseXNlcyoqIHsudGFic2V0IC50YWJzZXRfZmFkZSAudGFic2V0X3BpbGxzfSANCg0KDQpJbnNwZWN0aW9uIG9mIHRoZSBwbG90cyBoaWdobGlnaHRlZCBwb3RlbnRpYWwgc2lnbmlmaWNhbnQgZGVjcmVhc2VzIGluIFBGQVMgY29udGVudCB3aXRoIGluY3JlYXNlZCBjb29raW5nIHRpbWUgYW5kIHZvbHVtZSBvZiBjb29raW5nLiANCkhlbmNlLCBoZXJlIHdlIHVzZWQgYGVtbWVhbnNgIChkb3dubG9hZCBmcm9tICpyZW1vdGVzOjppbnN0YWxsX2dpdGh1YigicnZsZW50aC9lbW1lYW5zIiwgZGVwZW5kZW5jaWVzID0gVFJVRSwgYnVpbGRfb3B0cyA9ICIiKSopIHRvIGdlbmVyYXRlIG1hcmdpbmFsaXNlZCBtZWFucyBhdCBzcGVjaWZpZWQgdmFsdWVzIG9mIHRoZSBkaWZmZXJlbnQgcHJlZGljdG9ycy4gDQpTdWNoIGFuYWx5c2lzIGVuYWJsZSB0aGUgcXVhbnRpZmljYXRpb24gb2YgdGhlIG1lYW4gZWZmZWN0IHNpemUgYWZ0ZXIgY29udHJvbGxpbmcgZm9yIGRpZmZlcmVudCB2YWx1ZXMgb2YgdGhlIG1vZGVyYXRvcnMuIA0KDQpOb3RlIHRoYXQgdGhlc2UgYW5hbHlzZXMgd2VyZSBub3QgcGVyZm9ybWVkIHNlcGFyYXRlbHkgdXNpbmcgZnVsbCBtb2RlbHMgd2l0aCBSYXRpb19saXF1aWRfZmlzaCB0YWtlbiBhcyBgTkFgIG9yIGAwYC4gSW5kZWVkLCBhIGZ1bGwgbW9kZWwgY29udGFpbmluZyB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkgYW5kIHRoZSBsaXF1aWQgcmF0aW8gd291bGQgZXh0cmFwb2xhdGUgcHJlZGljdGlvbnMgZm9yIHRoZSBkcnkgY29va2luZyBjYXRlZ29yeSBhdCB0aGUgbWVhbiBsaXF1aWQgcmF0aW87IHdoaWNoIGlzIGluY29ycmVjdC4gVGhlcmVmb3JlLCBhbGwgZnVsbCBtb2RlbHMgd2VyZSByYW4gd2l0aCB0aGUgZGF0YSBjb250YWluaW5nIGBOQWAgZm9yIHRoZSBSYXRpb19saXF1aWRfZmlzaCBvZiB0aGUgZHJ5IGNvb2tpbmcgbWV0aG9kOyBhbmQgc2VwYXJhdGUgbW9kZWxzIHdlcmUgcmFuIHdpdGggYSBkYXRhIHN1YnNldCBvbmx5IGNvbnRhaW5pbmcgdGhlIGRyeSBjb29raW5nIG1ldGhvZC4gDQoNCiMjIEZ1bGwgbW9kZWwgDQoNCmBgYHtyfQ0KIyBGdWxsIG1vZGVsIGluIG9yaWdpbmFsIHVuaXRzIChubyB6LXRyYW5zZm9ybWF0aW9uKQ0KZGF0JGxvZ19SYXRpb19saXF1aWRfZmlzaDwtbG9nKGRhdCRSYXRpb19saXF1aWRfZmlzaCkNCg0KZnVsbF9tb2RlbF9vcmdfdW5pdHMgPC0gcnVuX21vZGVsKGRhdCwgfiAtIDEgKyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raW5nX0NhdGVnb3J5ICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wZXJhdHVyZV9pbl9DZWxzaXVzICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGhfY29va2luZ190aW1lX2luX3MgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGQVNfY2FyYm9uX2NoYWluICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfUmF0aW9fbGlxdWlkX2Zpc2gpDQoNCg0KDQojIEZ1bGwgbW9kZWwgaW4gb3JpZ2luYWwgdW5pdHMgKG5vIHotdHJhbnNmb3JtYXRpb24pLCBidXQgd2l0aG91dCB0aGUgIk5vIGxpcXVpZCIgZGF0YQ0KIyBUaGlzIG1vZGVsIHdpbGwgYmUgdXNlZCBmb3IgY29uZGl0aW9uYWwgYW5hbHlzZXMgb24gdGhlIHZvbHVtZSBvZiBsaXF1aWQsIHdoZXJlIHRoZSBkYXRhIHdpdGhvdXQgbGlxdWlkIGlzIGlycmVsZXZhbnQgDQpkYXRfb2lsX3dhdGVyPC1maWx0ZXIoZGF0LCBDb29raW5nX0NhdGVnb3J5IT0iTm8gbGlxdWlkIikNCg0KZnVsbF9tb2RlbF9vcmdfdW5pdHNfb2lsX3dhdGVyPC0gcnVuX21vZGVsKGRhdF9vaWxfd2F0ZXIsIH4gLSAxICsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29va2luZ19DYXRlZ29yeSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRkFTX2NhcmJvbl9jaGFpbiArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX1JhdGlvX2xpcXVpZF9maXNoKQ0KDQoNCiMgRnVsbCBtb2RlbCBpbiBvcmlnaW5hbCB1bml0cyAobm8gei10cmFuc2Zvcm1hdGlvbiksIHdpdGggUmF0aW9fbGlxdWlkX2Zpc2hfMA0KZGF0JGxvZ19SYXRpb19saXF1aWRfZmlzaDAgPC0gbG9nKGRhdCRSYXRpb19saXF1aWRfZmlzaF8wICsgMSkNCg0KZnVsbF9tb2RlbF9vcmdfdW5pdHMwIDwtIHJ1bl9tb2RlbChkYXQsIH4gLSAxICsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvb2tpbmdfQ2F0ZWdvcnkgKyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aF9jb29raW5nX3RpbWVfaW5fcyArIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRkFTX2NhcmJvbl9jaGFpbiArIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfUmF0aW9fbGlxdWlkX2Zpc2gwKQ0KDQoNCg0KIyBEYXRhIHN1YnNldCBvbmx5IGNvbnRhaW5pbmcgdGhlIGRhdGEgd2l0aCB0aGUgZHJ5IGNvb2tpbmcgbWV0aG9kLiBIZXJlLCBvbmx5IHRoZSBjb29raW5nIHRpbWUgd2FzIGFkZGVkIGJlY2F1c2UgdGhlIGxpcXVpZCByYXRpbywgY29va2luZyB0ZW1wZXJhdHVyZSwgYW5kIFBGQVMgY2FyYm9uIGNoYWluIGxlbmd0aCBkbyBub3QgaGF2ZSBzdWZmaWNpZW50IHZhcmlhYmlsaXR5LiANCg0KZGF0X2RyeTwtZmlsdGVyKGRhdCwgQ29va2luZ19DYXRlZ29yeT09Ik5vIGxpcXVpZCIpDQpmdWxsX21vZGVsX29yZ191bml0c19kcnk8LXJ1bl9tb2RlbChkYXRfZHJ5LCB+IExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykNCg0KDQpzYXZlKGZ1bGxfbW9kZWxfb3JnX3VuaXRzLCBmdWxsX21vZGVsX29yZ191bml0c19kcnksIGZ1bGxfbW9kZWxfb3JnX3VuaXRzMCwgZnVsbF9tb2RlbF9vcmdfdW5pdHNfb2lsX3dhdGVyLCBmaWxlID0gaGVyZSgiUmRhdGEiLCAiZnVsbF9tb2RlbHNfb3JnX3VuaXRzLlJEYXRhIikpDQpgYGANCg0KYGBge3IsIGluY2x1ZGU9RkFMU0V9DQpsb2FkKGhlcmUoIlJkYXRhIiwgImZ1bGxfbW9kZWxzX29yZ191bml0cy5SRGF0YSIpKSAjIExvYWQgdGhlIG91dHB1dCBvZiB0aGUgbW9kZWwgdG8gYXZvaWQgcnVubmluZyBpdA0KDQpzdW1tYXJ5KGZ1bGxfbW9kZWxfb3JnX3VuaXRzKQ0Kc3VtbWFyeShmdWxsX21vZGVsX29yZ191bml0czApDQpzdW1tYXJ5KGZ1bGxfbW9kZWxfb3JnX3VuaXRzX29pbF93YXRlcikNCnN1bW1hcnkoZnVsbF9tb2RlbF9vcmdfdW5pdHNfZHJ5KQ0KYGBgDQoNCg0KIyMgT3ZlcmFsbCBtYXJnaW5hbGlzZWQgbWVhbg0KDQojIyMgT3ZlcmFsbCBtZWFuIHdpdGggUmF0aW9fbGlxdWlkX2Zpc2ggdGFrZW4gYXMgYDBgIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkNCg0KYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD03fQ0KcmVzMDwtbW9kX3Jlc3VsdHMobW9kZWwgPSBmdWxsX21vZGVsX29yZ191bml0czAsIGRhdGE9ZGF0LCBncm91cD0iU3R1ZHlfSUQiLG1vZD0iMSIpIA0KcmVzMCRtb2RfdGFibGUNCg0Kb3JjaGFyZF9wbG90KHJlczAsIG1vZD0iMSIsIGdyb3VwPSAiU3R1ZHlfSUQiLCB4bGFiPSJsblJSIiwgZGF0YT1kYXQsIGFscGhhPTAuNCwgdHJ1bmsuc2l6ZSA9IDksIGJyYW5jaC5zaXplID0gMiwgbGVnZW5kLnBvcz0iYm90dG9tLmxlZnQiKSsNCiAgICAgICAgICAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCA3KSkrICMgY2hhbmdlIHBvaW50IHNjYWxpbmcNCiAgICAgICAgICAgdGhlbWUocGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4zKSwgIyBib3JkZXIgYXJvdW5kIHRoZSBwbG90DQogICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzKSkNCmBgYA0KDQojIyMgT3ZlcmFsbCBtZWFuIHdpdGggUmF0aW9fbGlxdWlkX2Zpc2ggdGFrZW4gYXMgYE5BYCBmb3IgdGhlIGRyeSBjb29raW5nIGNhdGVnb3J5DQoNCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9N30NCnJlczwtbW9kX3Jlc3VsdHMobW9kZWwgPSBmdWxsX21vZGVsX29yZ191bml0cywgZGF0YT1kYXQsIGdyb3VwPSJTdHVkeV9JRCIsIG1vZD0iMSIpIA0KcmVzJG1vZF90YWJsZQ0KDQpvcmNoYXJkX3Bsb3QocmVzLCBtb2Q9IjEiLCBncm91cD0gIlN0dWR5X0lEIiwgeGxhYj0ibG5SUiIsIGRhdGE9ZGF0LCBhbHBoYT0wLjQsIHRydW5rLnNpemUgPSA5LCBicmFuY2guc2l6ZSA9IDIsIGxlZ2VuZC5wb3M9ImJvdHRvbS5sZWZ0IikrDQogICAgICAgICAgIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZSA9IGMoMSwgNykpKyAjIGNoYW5nZSBwb2ludCBzY2FsaW5nDQogICAgICAgICAgIHRoZW1lKHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMyksICMgYm9yZGVyIGFyb3VuZCB0aGUgcGxvdA0KICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksICMgY2hhbmdlIGZvbnQgc2l6ZXMNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMykpDQpgYGANCg0KDQojIyBNYXJnaW5hbCBtZWFucyBmb3IgZGlmZmVyZW50IGNvb2tpbmcgY2F0ZWdvcmllcw0KDQojIyMgT3ZlcmFsbCBtZWFuIGZvciB0aGUgd2F0ZXItIGFuZCBvaWwtYmFzZWQgY29va2luZw0KDQpgYGB7ciwgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTd9DQpyZXNfY2F0PC1tb2RfcmVzdWx0cyhmdWxsX21vZGVsX29yZ191bml0cywgZGF0YSA9IGRhdCwgbW9kID0gIjEiLCBncm91cD0iU3R1ZHlfSUQiLGJ5ID0gIkNvb2tpbmdfQ2F0ZWdvcnkiKQ0KcmVzX2NhdCRtb2RfdGFibGUNCg0Kb3JjaGFyZF9wbG90KHJlc19jYXQsIG1vZD0iMSIsIGNvbmRpdGlvbi5sYWI9IkNvb2tpbmcgQ2F0ZWdvcnkiLCBncm91cD0gIlN0dWR5X0lEIiwgeGxhYj0ibG5SUiIsIGRhdGE9ZGF0LCBhbHBoYT0wLjQsIHRydW5rLnNpemUgPSA5LCBicmFuY2guc2l6ZSA9IDIsIGxlZ2VuZC5wb3M9ImJvdHRvbS5sZWZ0IikrDQogICAgICAgICAgIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZSA9IGMoMSwgNykpKyAjIGNoYW5nZSBwb2ludCBzY2FsaW5nDQogICAgICAgICAgIHRoZW1lKHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMyksICMgYm9yZGVyIGFyb3VuZCB0aGUgcGxvdA0KICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksICMgY2hhbmdlIGZvbnQgc2l6ZXMNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMykpDQpgYGANCg0KIyMjIE92ZXJhbGwgbWVhbiBmb3IgdGhlIGRyeSBjb29raW5nDQoNCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9N30NCnJlc19kcnk8LW1vZF9yZXN1bHRzKGZ1bGxfbW9kZWxfb3JnX3VuaXRzX2RyeSwgZGF0YSA9IGRhdF9kcnksIGdyb3VwPSJTdHVkeV9JRCIsIG1vZCA9ICIxIikNCnJlc19kcnkkbW9kX3RhYmxlDQoNCm9yY2hhcmRfcGxvdChyZXNfZHJ5LCBtb2Q9IjEiLCBncm91cD0gIlN0dWR5X0lEIiwgeGxhYj0ibG5SUiIsIGRhdGE9ZGF0X2RyeSwgYWxwaGE9MC40LCB0cnVuay5zaXplID0gOSwgYnJhbmNoLnNpemUgPSAyLCBsZWdlbmQucG9zPSJib3R0b20ubGVmdCIpKw0KICAgICAgICAgICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2UgPSBjKDEsIDcpKSsgIyBjaGFuZ2UgcG9pbnQgc2NhbGluZw0KICAgICAgICAgICB0aGVtZShwYW5lbC5ib3JkZXIgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gImJsYWNrIiwgZmlsbD1OQSwgc2l6ZT0xLjMpLCAjIGJvcmRlciBhcm91bmQgdGhlIHBsb3QNCiAgICAgICAgICAgICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLCAjIGNoYW5nZSBmb250IHNpemVzDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICAgICAgICAgICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMpKQ0KYGBgDQoNCg0KIyMgTWFyZ2luYWwgbWVhbnMgZm9yIHByZS1kZXRlcm1pbmVkIGNvb2tpbmcgdGltZXMNCg0KSGVyZSwgd2UgZ2VuZXJhdGUgZXN0aW1hdGVzIGF0IGNvb2tpbmcgdGltZXMgb2YgMiwgMTAsIGFuZCAyNSBtaW4uIA0KDQojIyMgTWFyZ2luYWwgbWVhbnMgZm9yIHByZS1kZXRlcm1pbmVkIGNvb2tpbmcgdGltZXMsIHdpdGggUmF0aW9fbGlxdWlkX2Zpc2ggdGFrZW4gYXMgYDBgIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkNCg0KYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD03fQ0KcmVzX2Nvb2tpbmdfdGltZTAgPC1tb2RfcmVzdWx0cyhmdWxsX21vZGVsX29yZ191bml0czAsIGRhdGEgPSBkYXQsIG1vZCA9ICIxIiwgZ3JvdXA9IlN0dWR5X0lEIixhdCA9IGxpc3QoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zID0gYygxMjAsNjAwLDE1MDApKSwgYnkgPSAiTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zIikNCnJlc19jb29raW5nX3RpbWUwJG1vZF90YWJsZQ0KDQpvcmNoYXJkX3Bsb3QocmVzX2Nvb2tpbmdfdGltZTAsIG1vZD0iMSIsIGNvbmRpdGlvbi5sYWI9IkNvb2tpbmcgdGltZSAoc2VjKSIsIGdyb3VwPSAiU3R1ZHlfSUQiLCB4bGFiPSJsblJSIiwgZGF0YT1kYXQsIGFscGhhPTAuNCwgdHJ1bmsuc2l6ZSA9IDksIGJyYW5jaC5zaXplID0gMiwgbGVnZW5kLnBvcz0iYm90dG9tLmxlZnQiKSsNCiAgICAgICAgICAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCA3KSkrICMgY2hhbmdlIHBvaW50IHNjYWxpbmcNCiAgICAgICAgICAgdGhlbWUocGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4zKSwgIyBib3JkZXIgYXJvdW5kIHRoZSBwbG90DQogICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzKSkNCmBgYA0KDQoNCiMjIyBNYXJnaW5hbCBtZWFucyBmb3IgcHJlLWRldGVybWluZWQgY29va2luZyB0aW1lcywgd2l0aCBSYXRpb19saXF1aWRfZmlzaCB0YWtlbiBhcyBgTkFgIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkNCg0KYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD03fQ0KcmVzX2Nvb2tpbmdfdGltZSA8LW1vZF9yZXN1bHRzKGZ1bGxfbW9kZWxfb3JnX3VuaXRzLCBkYXRhID0gZGF0LCBtb2QgPSAiMSIsIGdyb3VwPSJTdHVkeV9JRCIsYXQgPSBsaXN0KExlbmd0aF9jb29raW5nX3RpbWVfaW5fcyA9IGMoMTIwLDYwMCwxNTAwKSksIGJ5ID0gIkxlbmd0aF9jb29raW5nX3RpbWVfaW5fcyIpDQpyZXNfY29va2luZ190aW1lJG1vZF90YWJsZQ0KDQpvcmNoYXJkX3Bsb3QocmVzX2Nvb2tpbmdfdGltZSwgbW9kPSIxIiwgY29uZGl0aW9uLmxhYj0iQ29va2luZyB0aW1lIChzZWMpIiwgZ3JvdXA9ICJTdHVkeV9JRCIsIHhsYWI9ImxuUlIiLCBkYXRhPWRhdCwgYWxwaGE9MC40LCB0cnVuay5zaXplID0gOSwgYnJhbmNoLnNpemUgPSAyLCBsZWdlbmQucG9zPSJib3R0b20ubGVmdCIpKw0KICAgICAgICAgICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2UgPSBjKDEsIDcpKSsgIyBjaGFuZ2UgcG9pbnQgc2NhbGluZw0KICAgICAgICAgICB0aGVtZShwYW5lbC5ib3JkZXIgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gImJsYWNrIiwgZmlsbD1OQSwgc2l6ZT0xLjMpLCAjIGJvcmRlciBhcm91bmQgdGhlIHBsb3QNCiAgICAgICAgICAgICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLCAjIGNoYW5nZSBmb250IHNpemVzDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICAgICAgICAgICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMpKQ0KDQpgYGANCg0KDQojIyMgTWFyZ2luYWxpc2VkIG1lYW5zIGZvciB0aGUgd2F0ZXItIGFuZCBvaWwtYmFzZWQgY29va2luZyBjYXRlZ29yaWVzIA0KDQpgYGB7ciwgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTd9DQpyZXNfY29va2luZ190aW1lX2NhdCA8LW1vZF9yZXN1bHRzKGZ1bGxfbW9kZWxfb3JnX3VuaXRzLCBkYXRhID0gZGF0LCBtb2QgPSAiQ29va2luZ19DYXRlZ29yeSIsIGdyb3VwPSJTdHVkeV9JRCIsYXQgPSBsaXN0KExlbmd0aF9jb29raW5nX3RpbWVfaW5fcyA9IGMoMTIwLDYwMCwxNTAwKSksIGJ5ID0gIkxlbmd0aF9jb29raW5nX3RpbWVfaW5fcyIpDQpyZXNfY29va2luZ190aW1lX2NhdCRtb2RfdGFibGUNCg0KDQpvcmNoYXJkX3Bsb3QocmVzX2Nvb2tpbmdfdGltZV9jYXQsIG1vZD0iMSIsIGNvbmRpdGlvbi5sYWI9IkNvb2tpbmcgdGltZSAoc2VjKSIsIGdyb3VwPSAiU3R1ZHlfSUQiLCB4bGFiPSJsblJSIiwgZGF0YT1kYXQsIGFscGhhPTAuNCwgdHJ1bmsuc2l6ZSA9IDksIGJyYW5jaC5zaXplID0gMiwgbGVnZW5kLnBvcz0iYm90dG9tLmxlZnQiKSsNCiAgICAgICAgICAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCA3KSkrICMgY2hhbmdlIHBvaW50IHNjYWxpbmcNCiAgICAgICAgICAgdGhlbWUocGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4zKSwgIyBib3JkZXIgYXJvdW5kIHRoZSBwbG90DQogICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzKSkNCmBgYA0KDQojIyMgTWFyZ2luYWxpc2VkIG1lYW5zIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkNCg0KYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD03fQ0KcmVzX2Nvb2tpbmdfdGltZV9kcnkgPC1tb2RfcmVzdWx0cyhmdWxsX21vZGVsX29yZ191bml0c19kcnksIGRhdGEgPSBkYXRfZHJ5LCBncm91cD0iU3R1ZHlfSUQiLGF0ID0gbGlzdChMZW5ndGhfY29va2luZ190aW1lX2luX3MgPSBjKDEyMCw2MDAsMTUwMCkpLCBieSA9ICJMZW5ndGhfY29va2luZ190aW1lX2luX3MiKQ0KcmVzX2Nvb2tpbmdfdGltZV9kcnkkbW9kX3RhYmxlDQoNCm9yY2hhcmRfcGxvdChyZXNfY29va2luZ190aW1lX2RyeSwgbW9kPSIxIiwgY29uZGl0aW9uLmxhYj0iQ29va2luZyB0aW1lIChzZWMpIiwgZ3JvdXA9ICJTdHVkeV9JRCIsIHhsYWI9ImxuUlIiLCBkYXRhPWRhdF9kcnksIGFscGhhPTAuNCwgdHJ1bmsuc2l6ZSA9IDksIGJyYW5jaC5zaXplID0gMiwgbGVnZW5kLnBvcz0iYm90dG9tLmxlZnQiLCBrLnBvcz0ibGVmdCIpKw0KICAgICAgICAgICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2UgPSBjKDEsIDcpKSsgIyBjaGFuZ2UgcG9pbnQgc2NhbGluZw0KICAgICAgICAgICB0aGVtZShwYW5lbC5ib3JkZXIgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gImJsYWNrIiwgZmlsbD1OQSwgc2l6ZT0xLjMpLCAjIGJvcmRlciBhcm91bmQgdGhlIHBsb3QNCiAgICAgICAgICAgICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLCAjIGNoYW5nZSBmb250IHNpemVzDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpLA0KICAgICAgICAgICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMpKQ0KYGBgDQoNCg0KIyMgTWFyZ2luYWwgbWVhbnMgZm9yIGRpZmZlcmVudCB2b2x1bWVzIG9mIGxpcXVpZA0KDQojIyMgUmF0aW9fbGlxdWlkX2Zpc2ggdGFrZW4gYXMgYE5BYCBmb3IgdGhlIGRyeSBjb29raW5nIGNhdGVnb3J5IA0KDQpIZXJlLCB3ZSBnZW5lcmF0ZSBtYXJnaW5hbGlzZWQgZXN0aW1hdGVzIGF0IHZvbHVtZXMgb2YgbGlxdWlkIG9mIH4wLjFtTC9nIG9mIHRpc3N1ZSwgfjEwIG1sL2cgb2YgdGlzc3VlLCBvciA0NSBtTC9nIG9mIHRpc3N1ZS4gV2UgZGlkIG5vdCBsb29rIGF0IHRoZSBtZWFucyBmb3IgZGlmZmVyZW50IGNvb2tpbmcgY2F0ZWdvcmllcyBiZWNhdXNlIHRoZXkgYXJlIGluaGVyZW50bHkgZGlmZmVyZW50IGluIHRoZSB2b2x1bWUgb2YgbGlxdWlkIHVzZWQuIA0KV2UgYWxzbyBvbmx5IHVzZWQgdGhlIGRhdGEgb24gb2lsIGFuZCB3YXRlciBiZWNhdXNlIHRoZSAiTm8gbGlxdWlkIiBjYXRlZ29yeSBpcyBub3QgcmVsZXZhbnQgZm9yIHRoaXMgYW5hbHlzaXMgd2hlbiBjb25zaWRlcmluZyBSYXRpb19saXF1aWRfZmlzaCBhcyBOQS4gDQoNCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9N30NCnJlc192b2x1bWU8LW1vZF9yZXN1bHRzKGZ1bGxfbW9kZWxfb3JnX3VuaXRzX29pbF93YXRlciwgZGF0YSA9IGRhdF9vaWxfd2F0ZXIsIG1vZCA9ICIxIiwgZ3JvdXA9IlN0dWR5X0lEIixhdCA9IGxpc3QobG9nX1JhdGlvX2xpcXVpZF9maXNoID0gYyhsb2coMC4xKSwgbG9nKDEwKSwgbG9nKDQ1KSkpLCBieSA9ICJsb2dfUmF0aW9fbGlxdWlkX2Zpc2giKQ0KcmVzX3ZvbHVtZSRtb2RfdGFibGUNCg0Kb3JjaGFyZF9wbG90KHJlc192b2x1bWUsIG1vZD0iMSIsIGNvbmRpdGlvbi5sYWI9ImxuKExpcXVpZCB2b2x1bWUgdG8gdGlzc3VlIHNhbXBsZSByYXRpbykgKG1ML2cpIiwgZ3JvdXA9ICJTdHVkeV9JRCIsIHhsYWI9ImxuUlIiLCBkYXRhPWRhdF9vaWxfd2F0ZXIsIGFscGhhPTAuNCwgdHJ1bmsuc2l6ZSA9IDksIGJyYW5jaC5zaXplID0gMiwgbGVnZW5kLnBvcz0iYm90dG9tLmxlZnQiKSsNCiAgICAgICAgICAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCA3KSkrICMgY2hhbmdlIHBvaW50IHNjYWxpbmcNCiAgICAgICAgICAgdGhlbWUocGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4zKSwgIyBib3JkZXIgYXJvdW5kIHRoZSBwbG90DQogICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkNCmBgYA0KDQojIyMgUmF0aW9fbGlxdWlkX2Zpc2ggdGFrZW4gYXMgMCBmb3IgdGhlIGRyeSBjb29raW5nIGNhdGVnb3J5DQoNCkhlcmUsIHdlIGdlbmVyYXRlIG1hcmdpbmFsaXNlZCBlc3RpbWF0ZXMgYXQgdm9sdW1lcyBvZiBsaXF1aWQgb2YgMG1ML2cgb2YgdGlzc3VlIChkcnkgY29va2luZyksIH4xMCBtbC9nIG9mIHRpc3N1ZSwgb3IgNDUgbUwvZyBvZiB0aXNzdWUuDQoNCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9N30NCnJlc192b2x1bWUwIDwtIG1vZF9yZXN1bHRzKGZ1bGxfbW9kZWxfb3JnX3VuaXRzMCwgZGF0YSA9IGRhdCwgbW9kID0gIjEiLCBncm91cD0iU3R1ZHlfSUQiLGF0ID0gbGlzdChsb2dfUmF0aW9fbGlxdWlkX2Zpc2gwID0gYygwLCBsb2coMTAgKyAxKSwgbG9nKDQ1ICsgMSkpKSwgYnkgPSAibG9nX1JhdGlvX2xpcXVpZF9maXNoMCIpDQpyZXNfdm9sdW1lMCRtb2RfdGFibGUNCg0Kb3JjaGFyZF9wbG90KHJlc192b2x1bWUwLCBtb2Q9IjEiLCBjb25kaXRpb24ubGFiPSJsbihMaXF1aWQgdm9sdW1lIHRvIHRpc3N1ZSBzYW1wbGUgcmF0aW8pIChtTC9nKSIsIGdyb3VwPSAiU3R1ZHlfSUQiLCB4bGFiPSJsblJSIiwgZGF0YT1kYXQsIGFscGhhPTAuNCwgdHJ1bmsuc2l6ZSA9IDksIGJyYW5jaC5zaXplID0gMiwgbGVnZW5kLnBvcz0iYm90dG9tLmxlZnQiKSsNCiAgICAgICAgICAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCA3KSkrICMgY2hhbmdlIHBvaW50IHNjYWxpbmcNCiAgICAgICAgICAgdGhlbWUocGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4zKSwgIyBib3JkZXIgYXJvdW5kIHRoZSBwbG90DQogICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkNCmBgYA0KDQojIyBNYXJnaW5hbCBtZWFucyBmb3IgZGlmZmVyZW50IFBGQVMgY2FyYm9uIGNoYWlucw0KDQoNCiMjIyBPdmVyYWxsIG1lYW4gYXQgdGhlIG1lYW4gb2YgZWFjaCBvdGhlciBwcmVkaWN0b3IsIHdpdGggUmF0aW9fbGlxdWlkX2Zpc2ggdGFrZW4gYXMgYDBgIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkNCg0KYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD03fQ0KcmVzX1BGQVMwPC1tb2RfcmVzdWx0cyhmdWxsX21vZGVsX29yZ191bml0czAsIGRhdGEgPSBkYXQsIG1vZCA9ICIxIiwgZ3JvdXA9IlN0dWR5X0lEIiwgYXQgPSBsaXN0KFBGQVNfY2FyYm9uX2NoYWluPSBjKDMsIDYsIDEyKSksIGJ5ID0gIlBGQVNfY2FyYm9uX2NoYWluIikNCnJlc19QRkFTMCRtb2RfdGFibGUNCg0Kb3JjaGFyZF9wbG90KHJlc19QRkFTMCwgbW9kPSIxIiwgY29uZGl0aW9uLmxhYj0iUEZBUyBjYXJib24gY2hhaW4iLCBncm91cD0gIlN0dWR5X0lEIiwgeGxhYj0ibG5SUiIsIGRhdGE9ZGF0LCBhbHBoYT0wLjQsIHRydW5rLnNpemUgPSA5LCBicmFuY2guc2l6ZSA9IDIsIGxlZ2VuZC5wb3M9ImJvdHRvbS5sZWZ0IikrDQogICAgICAgICAgIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZSA9IGMoMSwgNykpKyAjIGNoYW5nZSBwb2ludCBzY2FsaW5nDQogICAgICAgICAgIHRoZW1lKHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMyksICMgYm9yZGVyIGFyb3VuZCB0aGUgcGxvdA0KICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksICMgY2hhbmdlIGZvbnQgc2l6ZXMNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMykpDQpgYGANCg0KIyMjIE92ZXJhbGwgbWVhbiBhdCB0aGUgbWVhbiBvZiBlYWNoIG90aGVyIHByZWRpY3Rvciwgd2l0aCBSYXRpb19saXF1aWRfZmlzaCB0YWtlbiBhcyBgTkFgIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkNCg0KSGVyZSwgd2UgZ2VuZXJhdGUgbWFyZ2luYWxpemVkIGVzdGltYXRlcyBmb3IgUEZBUyBvZiAzLCA2LCBhbmQgMTIgY2FyYm9uIGNoYWlucw0KDQpgYGB7ciwgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTd9DQpyZXNfUEZBUzwtbW9kX3Jlc3VsdHMoZnVsbF9tb2RlbF9vcmdfdW5pdHMsIGRhdGEgPSBkYXQsIG1vZCA9ICIxIiwgZ3JvdXA9IlN0dWR5X0lEIixhdCA9IGxpc3QoUEZBU19jYXJib25fY2hhaW49IGMoMywgNiwgMTIpKSwgYnkgPSAiUEZBU19jYXJib25fY2hhaW4iKQ0KcmVzX1BGQVMkbW9kX3RhYmxlDQoNCm9yY2hhcmRfcGxvdChyZXNfUEZBUywgbW9kPSIxIiwgY29uZGl0aW9uLmxhYj0iUEZBUyBjYXJib24gY2hhaW4iLCBncm91cD0gIlN0dWR5X0lEIiwgeGxhYj0ibG5SUiIsIGRhdGE9ZGF0LCBhbHBoYT0wLjQsIHRydW5rLnNpemUgPSA5LCBicmFuY2guc2l6ZSA9IDIsIGxlZ2VuZC5wb3M9ImJvdHRvbS5sZWZ0IikrDQogICAgICAgICAgIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZSA9IGMoMSwgNykpKyAjIGNoYW5nZSBwb2ludCBzY2FsaW5nDQogICAgICAgICAgIHRoZW1lKHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMyksICMgYm9yZGVyIGFyb3VuZCB0aGUgcGxvdA0KICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksICMgY2hhbmdlIGZvbnQgc2l6ZXMNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMykpDQpgYGANCg0KDQojIyMgTWFyZ2luYWxpc2VkIG1lYW4gZXN0aW1hdGUgZm9yIHRoZSB3YXRlci0gYW5kIG9pbC1iYXNlZCBjb29raW5nIGNhdGVnb3JpZXMNCg0KYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD03fQ0KcmVzX1BGQVNfY2F0PC1tb2RfcmVzdWx0cyhmdWxsX21vZGVsX29yZ191bml0cywgZGF0YSA9IGRhdCwgbW9kID0gIkNvb2tpbmdfQ2F0ZWdvcnkiLCBncm91cD0iU3R1ZHlfSUQiLCBhdCA9IGxpc3QoUEZBU19jYXJib25fY2hhaW49IGMoMywgNiwgMTIpKSwgYnkgPSAiUEZBU19jYXJib25fY2hhaW4iKQ0KcmVzX1BGQVNfY2F0JG1vZF90YWJsZQ0KDQpvcmNoYXJkX3Bsb3QocmVzX1BGQVNfY2F0LCBtb2Q9IjEiLCBjb25kaXRpb24ubGFiPSJQRkFTIGNhcmJvbiBjaGFpbiIsIGdyb3VwPSAiU3R1ZHlfSUQiLCB4bGFiPSJsblJSIiwgZGF0YT1kYXQsIGFscGhhPTAuNCwgdHJ1bmsuc2l6ZSA9IDksIGJyYW5jaC5zaXplID0gMiwgbGVnZW5kLnBvcz0iYm90dG9tLmxlZnQiKSsNCiAgICAgICAgICAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCA3KSkrICMgY2hhbmdlIHBvaW50IHNjYWxpbmcNCiAgICAgICAgICAgdGhlbWUocGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4zKSwgIyBib3JkZXIgYXJvdW5kIHRoZSBwbG90DQogICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzKSkNCmBgYA0KDQojIw0KDQoNCiMgKipTdWItZ3JvdXAgYW5hbHlzZXMgZm9yIGVhY2ggY29va2luZyBjYXRlZ29yeSoqIHsudGFic2V0IC50YWJzZXRfZmFkZSAudGFic2V0X3BpbGxzfSANCg0KSGVyZSwgd2UgaW52ZXN0aWdhdGVkIHdoZXRoZXIgdGhlIGVmZmVjdCBvZiB0aGUgY29udGludW91cyBtb2RlcmF0b3JzIG9uIGxuUlIgdmFyeSBkZXBlbmRpbmcgb24gdGhlIGNvb2tpbmcgY2F0ZWdvcnkuIEhlbmNlLCB3ZSBwZXJmb3JtZWQgc3Vic2V0IGFuYWx5c2VzIGZvciBlYWNoIGNvb2tpbmcgY2F0ZWdvcnkuIA0KDQojIyBPaWwtYmFzZWQgY29va2luZw0KDQojIyMgRmlsdGVyIGRhdGENCmBgYHtyfQ0Kb2lsX2RhdDwtZmlsdGVyKGRhdCwgQ29va2luZ19DYXRlZ29yeT09Im9pbC1iYXNlZCIpDQpgYGANCg0KIyMjIEZ1bGwgbW9kZWwsIHdpdGggUmF0aW9fbGlxdWlkX2Zpc2ggdGFrZW4gYXMgYDBgIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkNCg0KYGBge3J9DQpmdWxsX21vZGVsX29pbDAgPC0gcnVuX21vZGVsKG9pbF9kYXQsIH4gc2NhbGUoVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cykgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoXzAgKyAxKSkpDQogICAgICAgICAgICAgICAgIA0Kc3VtbWFyeShmdWxsX21vZGVsX29pbDApDQpyMl9tbChmdWxsX21vZGVsX29pbDApDQoNCnNhdmUoZnVsbF9tb2RlbF9vaWwwLCBmaWxlID0gaGVyZSgiUmRhdGEiLCAiZnVsbF9tb2RlbF9vaWwwLlJEYXRhIikpDQogICAgICAgICAgICANCmBgYA0KDQoNCiMjIyBGdWxsIG1vZGVsLCB3aXRoIFJhdGlvX2xpcXVpZF9maXNoIHRha2VuIGFzIGBOQWAgZm9yIHRoZSBkcnkgY29va2luZyBjYXRlZ29yeQ0KDQpgYGB7cn0NCmZ1bGxfbW9kZWxfb2lsIDwtIHJ1bl9tb2RlbChvaWxfZGF0LCB+IHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShQRkFTX2NhcmJvbl9jaGFpbikgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKGxvZyhSYXRpb19saXF1aWRfZmlzaCkpKQ0KICAgICAgICAgICAgICAgICANCnN1bW1hcnkoZnVsbF9tb2RlbF9vaWwpDQpyMl9tbChmdWxsX21vZGVsX29pbCkNCg0Kc2F2ZShmdWxsX21vZGVsX29pbCwgZmlsZSA9IGhlcmUoIlJkYXRhIiwgImZ1bGxfbW9kZWxfb2lsLlJEYXRhIikpDQogICAgICAgICAgICANCmBgYA0KDQoNCg0KYGBge3IsIGluY2x1ZGU9Rn0NCmxvYWQoaGVyZSgiUmRhdGEiLCAiZnVsbF9tb2RlbF9vaWwuUkRhdGEiKSkNCnN1bW1hcnkoZnVsbF9tb2RlbF9vaWwpDQoNCnN1bW1hcnkoZnVsbF9tb2RlbF9vaWwwKQ0KYGBgDQoNCg0KIyMgV2F0ZXItYmFzZWQgY29va2luZw0KDQojIyMgRmlsdGVyIGRhdGENCmBgYHtyfQ0Kd2F0ZXJfZGF0PC1maWx0ZXIoZGF0LCBDb29raW5nX0NhdGVnb3J5PT0id2F0ZXItYmFzZWQiKQ0KYGBgDQoNCiMjIyBGdWxsIG1vZGVsLCB3aXRoIFJhdGlvX2xpcXVpZF9maXNoIHRha2VuIGFzIGAwYCBmb3IgdGhlIGRyeSBjb29raW5nIGNhdGVnb3J5DQoNCmBgYHtyfQ0KZnVsbF9tb2RlbF93YXRlcjAgPC0gcnVuX21vZGVsKHdhdGVyX2RhdCwgfg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoXzAgKyAxKSkpDQogICAgICAgICAgICAgICAgIA0Kc3VtbWFyeShmdWxsX21vZGVsX3dhdGVyMCkNCnIyX21sKGZ1bGxfbW9kZWxfd2F0ZXIwKQ0KYGBgDQoNCiMjIyBGdWxsIG1vZGVsLCB3aXRoIFJhdGlvX2xpcXVpZF9maXNoIHRha2VuIGFzIGBOQWAgZm9yIHRoZSBkcnkgY29va2luZyBjYXRlZ29yeQ0KDQpgYGB7cn0NCmZ1bGxfbW9kZWxfd2F0ZXIgPC0gcnVuX21vZGVsKHdhdGVyX2RhdCwgfg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoKSkpDQogICAgICAgICAgICAgICAgIA0Kc3VtbWFyeShmdWxsX21vZGVsX3dhdGVyKQ0KcjJfbWwoZnVsbF9tb2RlbF93YXRlcikNCmBgYA0KDQojIyMgQ29tcGFyaXNvbiBiZXR3ZWVuIHN0ZWFtaW5nIGFuZCBvdGhlciB3YXRlci1iYXNlZCBjb29raW5nIGNhdGVnb3JpZXMNCg0KSW4gb3VyIGRhdGEgc2V0LCB0aGUgc3R1ZGllcyB1c2luZyBzdGVhbWluZy1iYXNlZCBjb29raW5nIHdlcmUgY29uc2lkZXJlZCB0byBoYXZlIGFuIHVua25vd24gKGkuZS4gTkEpIGJlY2F1c2Ugb2YgdGhlIGRpZmZpY3VsdHkgdG8gYXNzZXNzIGhvdyBtdWNoIGxpcXVpZCBnZXRzIGluIGNvbnRhY3Qgd2l0aCB0aGUgcHJvZHVjdHMuIA0KSGVyZSwgd2UgcHJvdmlkZSBhbiBhbmFseXNpcyB0byBjb21wYXJlIHN0ZWFtaW5nIHdpdGggb3RoZXIgd2F0ZXItYmFzZWQgY29va2luZyBjYXRlZ29yaWVzDQoNCmBgYHtyfQ0Kd2F0ZXJfZGF0JHN0ZWFtZWQ8LWlmZWxzZSh3YXRlcl9kYXQkQ29va2luZ19tZXRob2Q9PSJTdGVhbWluZyIsInN0ZWFtZWQiLCJvdGhlciIpICMgY3JlYXRlIGEgZHVtbXkgdmFyaWFibGUgdG8gZGlmZmVyZW50aWF0ZSAic3RlYW1pbmciIHdpdGggb3RoZXIgdHlwZXMgb2Ygd2F0ZXItYmFzZWQgY29va2luZw0KDQpmdWxsX21vZGVsX3dhdGVyX3N0ZWFtZWQgPC0gcnVuX21vZGVsKHdhdGVyX2RhdCwgfiAtMSArICMgd2l0aG91dCBpbnRlcmNlcHQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZWFtZWQgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShQRkFTX2NhcmJvbl9jaGFpbikpICMgSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgUmF0aW8gbGlxdWlkIGZpc2ggZnJvbSB0aGUgbW9kZWwuIE90aGVyd2lzZSwgaXQgd291bGQgcmVtb3ZlIG9ic2VydmF0aW9ucyB3aGVyZSB0aGUgbGlxdWlkIHZvbHVtZSB3YXMgdW5rbm93bi4gDQoNCnN1bW1hcnkoZnVsbF9tb2RlbF93YXRlcl9zdGVhbWVkKQ0KDQojIENvbnRyYXN0IGJldHdlZW4gc3RlYW1lZCBhbmQgbm9uLXN0ZWFtZWQNCmZ1bGxfbW9kZWxfd2F0ZXJfc3RlYW1lZF9jb250IDwtIHJ1bl9tb2RlbCh3YXRlcl9kYXQsICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4gIHN0ZWFtZWQgKyAjIHdpdGggaW50ZXJjZXB0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSkgDQoNCnN1bW1hcnkoZnVsbF9tb2RlbF93YXRlcl9zdGVhbWVkX2NvbnQpDQoNCnNhdmUoZnVsbF9tb2RlbF93YXRlciwgZnVsbF9tb2RlbF93YXRlcl9zdGVhbWVkLCBmdWxsX21vZGVsX3dhdGVyX3N0ZWFtZWRfY29udCwgZmlsZSA9IGhlcmUoIlJkYXRhIiwgImZ1bGxfbW9kZWxfd2F0ZXIuUkRhdGEiKSkNCmBgYA0KDQoNCmBgYHtyLCBpbmNsdWRlPUZ9DQpsb2FkKGhlcmUoIlJkYXRhIiwgImZ1bGxfbW9kZWxfd2F0ZXIuUkRhdGEiKSkNCnN1bW1hcnkoZnVsbF9tb2RlbF93YXRlcikNCnN1bW1hcnkoZnVsbF9tb2RlbF93YXRlcjApDQpzdW1tYXJ5KGZ1bGxfbW9kZWxfd2F0ZXJfc3RlYW1lZCkNCmBgYA0KDQoNCiMjIERyeSBjb29raW5nIA0KDQojIyMgRmlsdGVyIGRhdGENCmBgYHtyfQ0KZHJ5X2RhdDwtZmlsdGVyKGRhdCwgQ29va2luZ19DYXRlZ29yeT09Ik5vIGxpcXVpZCIpDQpgYGANCg0KDQojIyMgRnVsbCBtb2RlbCANCg0KYGBge3J9DQpmdWxsX21vZGVsX2RyeSA8LSBydW5fbW9kZWwoZHJ5X2RhdCwgfiBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpKQ0KICAgICAgICAgICAgICAgICANCnN1bW1hcnkoZnVsbF9tb2RlbF9kcnkpDQpyMl9tbChmdWxsX21vZGVsX2RyeSkNCg0Kc2F2ZShmdWxsX21vZGVsX2RyeSwgZmlsZSA9IGhlcmUoIlJkYXRhIiwgImZ1bGxfbW9kZWxfZHJ5LlJEYXRhIikpDQpgYGANCg0KDQpgYGB7ciwgaW5jbHVkZT1GfQ0KbG9hZChoZXJlKCJSZGF0YSIsICJmdWxsX21vZGVsX2RyeS5SRGF0YSIpKQ0Kc3VtbWFyeShmdWxsX21vZGVsX2RyeSkNCmBgYA0KDQojIw0KDQoNCiMgKipQdWJsaWNhdGlvbiBiaWFzKiogey50YWJzZXQgLnRhYnNldF9mYWRlIC50YWJzZXRfcGlsbHN9IA0KDQojIyBGdW5uZWwgcGxvdCANCg0KIyMjIEZ1bm5lbCBwbG90IHdpdGggUmF0aW9fbGlxdWlkX2Zpc2ggdGFrZW4gYXMgYDBgIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkNCmBgYHtyfQ0KZnVubmVsKGZ1bGxfbW9kZWwwLCB5YXhpcyA9ICJzZWludiIpDQpmdW5uZWwoZnVsbF9tb2RlbDApDQpgYGANCg0KIyMjIEZ1bm5lbCBwbG90IHdpdGggUmF0aW9fbGlxdWlkX2Zpc2ggdGFrZW4gYXMgYE5BYCBmb3IgdGhlIGRyeSBjb29raW5nIGNhdGVnb3J5DQpgYGB7cn0NCmZ1bm5lbChmdWxsX21vZGVsLCB5YXhpcyA9ICJzZWludiIpDQpmdW5uZWwoZnVsbF9tb2RlbCkNCmBgYA0KDQojIyBFZ2dlciByZWdyZXNzaW9ucyANCg0KIyMjIEZ1bGwgbW9kZWwgd2l0aCBSYXRpb19saXF1aWRfZmlzaCB0YWtlbiBhcyBgMGAgZm9yIHRoZSBkcnkgY29va2luZyBjYXRlZ29yeQ0KDQpgYGB7cn0NCmVnZ2VyX2FsbDAgPC0gcnVuX21vZGVsKGRhdCwgfiAtIDEgKyBDb29raW5nX0NhdGVnb3J5ICsNCiAgICAgICAgICAgICAgICAgICAgICBJKHNxcnQoMS9OX3RpbGRlKSkgKyAgDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUHVibGljYXRpb25feWVhcikgKyANCiAgICAgICAgICAgICAgICAgICAgICBzY2FsZShUZW1wZXJhdHVyZV9pbl9DZWxzaXVzKSArDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKSArDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUEZBU19jYXJib25fY2hhaW4pICsNCiAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpKSkNCnN1bW1hcnkoZWdnZXJfYWxsMCkNCmBgYA0KDQojIyMgRnVsbCBtb2RlbCB3aXRoIFJhdGlvX2xpcXVpZF9maXNoIHRha2VuIGFzIGBOQWAgZm9yIHRoZSBkcnkgY29va2luZyBjYXRlZ29yeQ0KDQpgYGB7cn0NCmVnZ2VyX2FsbCA8LSBydW5fbW9kZWwoZGF0LCB+IC0gMSArIENvb2tpbmdfQ2F0ZWdvcnkgKw0KICAgICAgICAgICAgICAgICAgICAgIEkoc3FydCgxL05fdGlsZGUpKSArICANCiAgICAgICAgICAgICAgICAgICAgICBzY2FsZShQdWJsaWNhdGlvbl95ZWFyKSArIA0KICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpICsNCiAgICAgICAgICAgICAgICAgICAgICBzY2FsZShQRkFTX2NhcmJvbl9jaGFpbikgKw0KICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKGxvZyhSYXRpb19saXF1aWRfZmlzaCkpKQ0Kc3VtbWFyeShlZ2dlcl9hbGwpDQoNCg0KZWdnZXJfbiA8LSBydW5fbW9kZWwoZGF0LCB+IEkoc3FydCgxL05fdGlsZGUpKSkNCnN1bW1hcnkoZWdnZXJfbikNCg0Kc2F2ZShlZ2dlcl9hbGwsIGVnZ2VyX2FsbDAsIGVnZ2VyX24sIGZpbGUgPSBoZXJlKCJSZGF0YSIsICJlZ2dlcl9yZWdyZXNzaW9ucy5SRGF0YSIpKQ0KYGBgDQoNCiMjIFB1YmxpY2F0aW9uIHllYXINCg0KYGBge3IsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEwfQ0KcHViX3llYXI8LXJ1bl9tb2RlbChkYXQsIH5QdWJsaWNhdGlvbl95ZWFyKQ0Kc3VtbWFyeShwdWJfeWVhcikNCg0KcGxvdF9jb250aW51b3VzKGRhdCwgcHViX3llYXIsIGRhdCRQdWJsaWNhdGlvbl95ZWFyLCAiUHVibGljYXRpb24geWVhciIpDQpgYGANCiMjDQoNCg0KIyAqKlNlbnNpdGl2aXR5IGFuYWx5c2VzKioNCiANCiMjIExlYXZlLW9uZS1vdXQgYW5hbHlzZXMgDQogDQpIZXJlLCB3ZSBpdGVyYXRpdmVseSByZW1vdmVkIG9uZSBzdHVkeSBhdCB0aGUgdGltZSBhbmQgaW52ZXN0aWdhdGVkIGhvdyBpdCBhZmZlY3RzIHRoZSBvdmVyYWxsIG1lYW4uIFJlbW92aW5nIG9uZSBzcGVjaWZpYyBzdHVkeSBwYXJ0aWN1bGFybHkgbW9kaWZpZXMgdGhlIGVzdGltYXRlLCBidXQgbm9uZSBvZiB0aGVzZSBtb2RlbHMgc2hvdyBhIHNpZ25pZmljYW50IG92ZXJhbGwgZGlmZmVyZW5jZSBpbiBQRkFTIGNvbmNlbnRyYXRpb24gd2l0aCBjb29raW5nLg0KDQogDQpgYGB7cn0NCmRhdCRTdHVkeV9JRDwtYXMuZmFjdG9yKGRhdCRTdHVkeV9JRCkNCmRhdDwtYXMuZGF0YS5mcmFtZShkYXQpICMgT25seSB3b3JrIHdpdGggYSBkYXRhZnJhbWUNClZDVl9tYXRyaXg8LWxpc3QoKSAjIHdpbGwgbmVlZCBuZXcgVkNWIG1hdHJpY2VzIGJlY2F1c2UgdGhlIHNhbXBsZSBzaXplIHdpbGwgYmUgaXRlcmF0aXZlbHkgcmVkdWNlZA0KTGVhdmUxc3R1ZHlvdXQ8LWxpc3QoKSAjIGNyZWF0ZSBhIGxpc3QgdGhhdCB3aWxsIGhvc3QgdGhlIHJlc3VsdHMgb2YgZWFjaCBtb2RlbCANCmZvcihpIGluIDE6bGVuZ3RoKGxldmVscyhkYXQkU3R1ZHlfSUQpKSl7ICMgTiBtb2RlbHMgPSBOIHN0dWRpZXMgDQogIFZDVl9tYXRyaXhbW2ldXTwtbWFrZV9WQ1ZfbWF0cml4KGRhdFtkYXQkU3R1ZHlfSUQgIT0gbGV2ZWxzKGRhdCRTdHVkeV9JRClbaV0sIF0sIFY9InZhcl9sblJSIiwgY2x1c3Rlcj0iQ29ob3J0X0lEIiwgb2JzPSJFZmZlY3RfSUQiKSAjIENyZWF0ZSBhIG5ldyBWQ1YgbWF0cml4IGZvciBlYWNoIG5ldyBtb2RlbA0KICBMZWF2ZTFzdHVkeW91dFtbaV1dIDwtIHJtYS5tdih5aSA9IGxuUlIsIFYgPSBWQ1ZfbWF0cml4W1tpXV0sICMgU2FtZSBtb2RlbCBzdHJ1Y3R1cmUgYXMgYWxsIHRoZSBtb2RlbHMgd2UgZml0dGVkDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSA9IGxpc3QofjF8U3R1ZHlfSUQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfjF8U3BlY2llc19jb21tb24sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4xfFBGQVNfdHlwZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfjF8RWZmZWN0X0lEKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCA9ICJ0IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRbZGF0JFN0dWR5X0lEICE9IGxldmVscyhkYXQkU3R1ZHlfSUQpW2ldLCBdKSAjIEdlbmVyYXRlIGEgbmV3IG1vZGVsIGZvciBlYWNoIG5ldyBkYXRhIChpdGVyYXRpdmUgcmVtb3ZhbCBvZiBvbmUgc3R1ZHkgYXQgYSB0aW1lKQ0KfQ0KDQojIFRoZSBvdXRwdXQgaXMgYSBsaXN0IHNvIHdlIG5lZWQgdG8gc3VtbWFyaXNlIHRoZSBjb2VmZmljaWVudHMgb2YgYWxsIHRoZSBtb2RlbHMgcGVyZm9ybWVkDQoNCnJlc3VsdHMuTGVhdmUxc3R1ZHlvdXQ8LWFzLmRhdGEuZnJhbWUoY2JpbmQoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FwcGx5KExlYXZlMXN0dWR5b3V0LCBmdW5jdGlvbih4KSBzdW1tYXJ5KHgpJGJldGEpLCAjIGV4dHJhY3QgdGhlIGJldGEgY29lZmZpY2llbnQgZnJvbSBhbGwgbW9kZWxzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FwcGx5KExlYXZlMXN0dWR5b3V0LCBmdW5jdGlvbih4KSBzdW1tYXJ5KHgpJHNlKSwgIyBleHRyYWN0IHRoZSBzdGFuZGFyZCBlcnJvciBmcm9tIGFsbCBtb2RlbHMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXBwbHkoTGVhdmUxc3R1ZHlvdXQsIGZ1bmN0aW9uKHgpIHN1bW1hcnkoeCkkenZhbCksICAjIGV4dHJhY3QgdGhlIHogdmFsdWUgZnJvbSBhbGwgbW9kZWxzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FwcGx5KExlYXZlMXN0dWR5b3V0LCBmdW5jdGlvbih4KSBzdW1tYXJ5KHgpJHB2YWwpLCAjIGV4dHJhY3QgdGhlIHAgdmFsdWUgZnJvbSBhbGwgbW9kZWxzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FwcGx5KExlYXZlMXN0dWR5b3V0LCBmdW5jdGlvbih4KSBzdW1tYXJ5KHgpJGNpLmxiKSwgIyBleHRyYWN0IHRoZSBsb3dlciBjb25maWRlbmNlIGludGVydmFsIGZvciBhbGwgbW9kZWxzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FwcGx5KExlYXZlMXN0dWR5b3V0LCBmdW5jdGlvbih4KSBzdW1tYXJ5KHgpJGNpLnViKSkpICMgZXh0cmFjdCB0aGUgdXBwZXIgY29uZmlkZW5jZSBpbnRlcnZhbCBmb3IgYWxsIG1vZGVscw0KDQpjb2xuYW1lcyhyZXN1bHRzLkxlYXZlMXN0dWR5b3V0KT1jKCJFc3RpbWF0ZSIsICJTRSIsICJ6dmFsIiwgInB2YWwiLCAiY2kubGIiLCAiY2kudWIiKSAjIGNoYW5nZSBjb2x1bW4gbmFtZXMgDQprYWJsZShyZXN1bHRzLkxlYXZlMXN0dWR5b3V0KSU+JSBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgcG9zaXRpb249ImxlZnQiKSAlPiUgc2Nyb2xsX2JveCh3aWR0aD0iMTAwJSIsIGhlaWdodD0iNTAwcHgiKSAjIFRhYmxlIG9mIHRoZSByZXN1bHRzIGZyb20gYWxsIG1vZGVscw0KDQoNCmRhdCAlPiUgZ3JvdXBfYnkoQXV0aG9yX3llYXIsIFN0dWR5X0lEKSAlPiUgc3VtbWFyaXNlKG1lYW49bWVhbihsblJSKSkgIyBTdHVkeSBGMDA1IChEZWxHb2Jib18yMDA4KSBoYXMgbXVjaCBsb3dlciBlZmZlY3Qgc2l6ZXMgdGhhbiB0aGUgb3RoZXJzLiANCmBgYA0KDQojIyBTdWJzZXQgYW5hbHlzZXMgd2l0aG91dCBgU3R1ZHlfSUQgRjAwNSAoRGVsIEdvYmJvIGV0IGFsLiAyMDA4KWAgey50YWJzZXQgLnRhYnNldF9mYWRlIC50YWJzZXRfcGlsbHN9IA0KDQojIyMgQ29va2luZyB0aW1lIA0KDQpgYGB7ciwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTB9DQoNCmRhdC5zZW5zPC1maWx0ZXIoZGF0LCBBdXRob3JfeWVhciE9IkRlbEdvYmJvXzIwMDgiKQ0KDQogIGRhdC5zZW5zPC1hcy5kYXRhLmZyYW1lKGRhdC5zZW5zKSAjIGNvbnZlcnQgZGF0YSBzZXQgaW50byBhIGRhdGEgZnJhbWUgdG8gY2FsY3VsYXRlIFZDViBtYXRyaXggDQogIFZDVl9sblJSLnNlbnM8LW1ha2VfVkNWX21hdHJpeChkYXQuc2VucywgViA9ICJ2YXJfbG5SUiIsIGNsdXN0ZXIgPSAiQ29ob3J0X0lEIiwgb2JzID0gIkVmZmVjdF9JRCIsIHJobyA9IDAuNSkgIyBjcmVhdGUgVkNWIG1hdHJpeCBmb3IgdGhlIHNwZWNpZmllZCBkYXRhDQogIA0KbW9kLnNlbnM8LSBybWEubXYobG5SUiwgVkNWX2xuUlIuc2VucywgDQogICAgICAgICBtb2RzPX5MZW5ndGhfY29va2luZ190aW1lX2luX3MsDQogICAgICAgICByYW5kb20gPSBsaXN0KH4xfFN0dWR5X0lELA0KICAgICAgICAgICAgICAgICAgICAgICB+MXxTcGVjaWVzX2NvbW1vbiwgDQogICAgICAgICAgICAgICAgICAgICAgIH4xfFBGQVNfdHlwZSwgDQogICAgICAgICAgICAgICAgICAgICAgIH4xfEVmZmVjdF9JRCksIA0KICAgICAgICAgdGVzdCA9ICJ0IiwgDQogICAgICAgICBkYXRhID0gZGF0LnNlbnMpDQpzdW1tYXJ5KG1vZC5zZW5zKQ0KDQpkYXQudGltZS5zZW5zPC1maWx0ZXIoZGF0LnNlbnMsIExlbmd0aF9jb29raW5nX3RpbWVfaW5fcyE9Ik5BIikNCnBsb3RfY29udGludW91cyhkYXQudGltZS5zZW5zLCBtb2Quc2VucywgZGF0LnRpbWUuc2VucyRMZW5ndGhfY29va2luZ190aW1lX2luX3MsICJDb29raW5nIHRpbWUgKHMpIikNCmBgYA0KDQoNCiMjIyMgUHJlZGljdGlvbnMgZnJvbSB0aGUgZnVsbCBtb2RlbCwgZm9yIGVhY2ggY29va2luZyBjYXRlZ29yeQ0KDQpgYGB7ciwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTB9DQpvaWxfZGF0LnNlbnM8LWZpbHRlcihkYXQuc2VucywgQ29va2luZ19DYXRlZ29yeT09Im9pbC1iYXNlZCIpDQoNCiMjIyMjIE9pbCBiYXNlZA0KZnVsbF9tb2RlbF9vaWxfdGltZS5zZW5zPC0gcnVuX21vZGVsKG9pbF9kYXQuc2VucywgfiBzY2FsZShUZW1wZXJhdHVyZV9pbl9DZWxzaXVzKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoXzAgKyAxKSkpDQpzdW1tYXJ5KGZ1bGxfbW9kZWxfb2lsX3RpbWUuc2VucykNCg0KcHJlZF9vaWxfdGltZS5zZW5zPC1wcmVkaWN0LnJtYShmdWxsX21vZGVsX29pbF90aW1lLnNlbnMsIGFkZHg9VFJVRSwgbmV3bW9kcz1jYmluZCgwLG9pbF9kYXQuc2VucyRMZW5ndGhfY29va2luZ190aW1lX2luX3MsIDAsIDApKSAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIGNvb2tpbmcgdGltZQ0KcHJlZF9vaWxfdGltZS5zZW5zPC1hcy5kYXRhLmZyYW1lKHByZWRfb2lsX3RpbWUuc2VucykNCnByZWRfb2lsX3RpbWUuc2VucyRMZW5ndGhfY29va2luZ190aW1lX2luX3M9cHJlZF9vaWxfdGltZS5zZW5zJFguTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zDQpwcmVkX29pbF90aW1lLnNlbnM8LWxlZnRfam9pbihvaWxfZGF0LnNlbnMsIHByZWRfb2lsX3RpbWUuc2VucywgYnk9Ikxlbmd0aF9jb29raW5nX3RpbWVfaW5fcyIpDQoNCg0KIyMjIyMgV2F0ZXIgYmFzZWQNCndhdGVyX2RhdC5zZW5zPC1maWx0ZXIoZGF0LnNlbnMsIENvb2tpbmdfQ2F0ZWdvcnk9PSJ3YXRlci1iYXNlZCIpDQoNCmZ1bGxfbW9kZWxfd2F0ZXJfdGltZS5zZW5zPC0gcnVuX21vZGVsKHdhdGVyX2RhdC5zZW5zLCB+IHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGhfY29va2luZ190aW1lX2luX3MrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUEZBU19jYXJib25fY2hhaW4pICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpKSkNCg0Kc3VtbWFyeShmdWxsX21vZGVsX3dhdGVyX3RpbWUuc2VucykNCg0KcHJlZF93YXRlcl90aW1lLnNlbnM8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfd2F0ZXJfdGltZS5zZW5zLCBhZGR4PVRSVUUsIG5ld21vZHM9Y2JpbmQod2F0ZXJfZGF0LnNlbnMkTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zLCAwLCAwKSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfd2F0ZXJfdGltZS5zZW5zPC1hcy5kYXRhLmZyYW1lKHByZWRfd2F0ZXJfdGltZS5zZW5zKQ0KcHJlZF93YXRlcl90aW1lLnNlbnMkTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zPXByZWRfd2F0ZXJfdGltZS5zZW5zJFguTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zDQpwcmVkX3dhdGVyX3RpbWUuc2VuczwtbGVmdF9qb2luKHdhdGVyX2RhdCwgcHJlZF93YXRlcl90aW1lLnNlbnMsIGJ5PSJMZW5ndGhfY29va2luZ190aW1lX2luX3MiKQ0KDQojIyMjIyBObyBsaXF1aWQgDQpkcnlfZGF0LnNlbnM8LWZpbHRlcihkYXQuc2VucywgQ29va2luZ19DYXRlZ29yeT09Ik5vIGxpcXVpZCIpDQoNCmZ1bGxfbW9kZWxfZHJ5X3RpbWUuc2VuczwtIHJ1bl9tb2RlbChkcnlfZGF0LnNlbnMsIH4gTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKQ0KDQpwcmVkX2RyeV90aW1lLnNlbnM8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfZHJ5X3RpbWUuc2VucywgYWRkeD1UUlVFKSAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIGNvb2tpbmcgdGltZQ0KcHJlZF9kcnlfdGltZS5zZW5zPC1hcy5kYXRhLmZyYW1lKHByZWRfZHJ5X3RpbWUuc2VucykNCnByZWRfZHJ5X3RpbWUuc2VucyRMZW5ndGhfY29va2luZ190aW1lX2luX3M9cHJlZF9kcnlfdGltZS5zZW5zJFguTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zDQpwcmVkX2RyeV90aW1lLnNlbnM8LWxlZnRfam9pbihkcnlfZGF0LnNlbnMsIHByZWRfZHJ5X3RpbWUuc2VucywgYnk9Ikxlbmd0aF9jb29raW5nX3RpbWVfaW5fcyIpDQoNCg0KDQoNCmdncGxvdChkYXQuc2VucyxhZXMoeCA9IExlbmd0aF9jb29raW5nX3RpbWVfaW5fcywgeSA9IGxuUlIsIGZpbGw9Q29va2luZ19DYXRlZ29yeSkpICsNCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX3dhdGVyX3RpbWUuc2VucywgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfd2F0ZXJfdGltZS5zZW5zLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZG9kZ2VyYmx1ZSIpKyAgDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF9vaWxfdGltZS5zZW5zLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIsIGNvbG9yID0gTlVMTCksIGFscGhhID0gMC4zKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9vaWxfdGltZS5zZW5zLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZ29sZGVucm9kIikrICANCiAgDQogICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF9kcnlfdGltZS5zZW5zLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIsIGNvbG9yID0gTlVMTCksIGFscGhhID0gMC4yKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9kcnlfdGltZS5zZW5zLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0icGFsZWdyZWVuMyIpKyAgDQogIA0KICANCiAgICAgICBnZW9tX3BvaW50KGFlcyhzaXplPSgxL3NxcnQodmFyX2xuUlIpKSwgZmlsbD1Db29raW5nX0NhdGVnb3J5KSwgc2hhcGU9MjEsIGFscGhhPTAuOCkgKw0KICAgICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCIjNTVDNjY3RkYiLCAiZ29sZGVucm9kMiIsICJkb2RnZXJibHVlMyIpKSsNCiAgICAgICBsYWJzKHggPSAiQ29va2luZyB0aW1lIChzKSIsIHkgPSAibG5SUiIsIHNpemUgPSAiUHJlY2lzb24gKDEvU0UpIikgKyANCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlPWMoMSwxMCkpKw0KICB0aGVtZV9idygpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCxsaW5ldHlwZSA9IDIsIGNvbG91ciA9ICJibGFjayIsYWxwaGE9MC41KSsgICAjIGhvcml6b250YWwgbGluZSBhdCBsblJSID0gMA0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUpLCAjIGNoYW5nZSBmb250IHNpemVzIGFuZCBsZWdlbmQgcG9zaXRpb24NCiAgICAgICAgICBsZWdlbmQudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xNCksDQogICAgICAgICAgbGVnZW5kLnBvc2l0aW9uPWMoMCwwKSwgDQogICAgICAgICAgbGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDAsMCksDQogICAgICAgICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCksIA0KICAgICAgICAgIGxlZ2VuZC5kaXJlY3Rpb249Imhvcml6b250YWwiLA0KICAgICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplPTE1KSwgDQogICAgICAgICAgcGFuZWwuYm9yZGVyPWVsZW1lbnRfcmVjdChjb2xvdXI9ImJsYWNrIiwgZmlsbD1OQSwgc2l6ZT0xLjIpKQ0KYGBgDQoNCg0KDQojIyMgTGlxdWlkIHZvbHVtZSB0byB0aXNzdWUgc2FtcGxlIHJhdGlvDQoNCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMH0NCmRhdC5zZW5zLnZvbDA8LWZpbHRlcihkYXQuc2VucywgUmF0aW9fbGlxdWlkX2Zpc2hfMCE9Ik5BIikNClZDVl9sblJSLnNlbnMudm9sMDwtbWFrZV9WQ1ZfbWF0cml4KGRhdC5zZW5zLnZvbDAsIFYgPSAidmFyX2xuUlIiLCBjbHVzdGVyID0gIkNvaG9ydF9JRCIsIG9icyA9ICJFZmZlY3RfSUQiLCByaG8gPSAwLjUpICMgY3JlYXRlIFZDViBtYXRyaXggZm9yIHRoZSBzcGVjaWZpZWQgZGF0YQ0KDQoNCm1vZC5zZW5zLnZvbDA8LSBybWEubXYobG5SUiwgVkNWX2xuUlIuc2Vucy52b2wwLCANCiAgICAgICAgIG1vZHM9fiBsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpLA0KICAgICAgICAgcmFuZG9tID0gbGlzdCh+MXxTdHVkeV9JRCwNCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3BlY2llc19jb21tb24sIA0KICAgICAgICAgICAgICAgICAgICAgICB+MXxQRkFTX3R5cGUsIA0KICAgICAgICAgICAgICAgICAgICAgICB+MXxFZmZlY3RfSUQpLCANCiAgICAgICAgIHRlc3QgPSAidCIsIA0KICAgICAgICAgZGF0YSA9IGRhdC5zZW5zLnZvbDApDQpzdW1tYXJ5KG1vZC5zZW5zLnZvbDApDQoNCnBsb3RfY29udGludW91cyhkYXQuc2Vucy52b2wwLCBtb2Quc2Vucy52b2wwLCBsb2coZGF0LnNlbnMudm9sMCRSYXRpb19saXF1aWRfZmlzaF8wICsgMSksICJsbihMaXF1aWQgdm9sdW1lIHRvIHRpc3N1ZSBzYW1wbGUgcmF0aW8gKyAxKSAobUwvZykiKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCIjNTVDNjY3RkYiLCJnb2xkZW5yb2QyIiwgImRvZGdlcmJsdWUzIikpDQoNCmBgYA0KDQoNCiMjIyMjIFByZWRpY3Rpb25zIGZyb20gdGhlIGZ1bGwgbW9kZWwsIGZvciBlYWNoIGNvb2tpbmcgY2F0ZWdvcnkNCg0KYGBge3IsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEwfQ0KIyMjIyMgT2lsIGJhc2VkDQpmdWxsX21vZGVsX29pbF92b2wuc2VucyA8LSBydW5fbW9kZWwob2lsX2RhdC5zZW5zLCB+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShQRkFTX2NhcmJvbl9jaGFpbikgKyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX1JhdGlvX2xpcXVpZF9maXNoMCkNCnN1bW1hcnkoZnVsbF9tb2RlbF9vaWxfdm9sLnNlbnMpDQoNCnByZWRfb2lsX3ZvbC5zZW5zPC0gcHJlZGljdC5ybWEoZnVsbF9tb2RlbF9vaWxfdm9sLnNlbnMsIGFkZHggPSBUUlVFLCBuZXdtb2RzID0gY2JpbmQoMCwNCiAgICAwLCAwLCBvaWxfZGF0LnNlbnMkbG9nX1JhdGlvX2xpcXVpZF9maXNoMCkpICAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIGNvb2tpbmcgdGltZQ0KDQpwcmVkX29pbF92b2wuc2VucyA8LSBhcy5kYXRhLmZyYW1lKHByZWRfb2lsX3ZvbC5zZW5zKQ0KcHJlZF9vaWxfdm9sLnNlbnMgPC0gcHJlZF9vaWxfdm9sLnNlbnMgJT4lDQogICAgbXV0YXRlKFJhdGlvX2xpcXVpZF9maXNoXzAgPSBleHAoWC5sb2dfUmF0aW9fbGlxdWlkX2Zpc2gwKSAtIDEsIENvb2tpbmdfQ2F0ZWdvcnkgPSAib2lsLWJhc2VkIiwNCiAgICAgICAgbG5SUiA9IDApICAjIGZvciB0aGUgcGxvdCB0byB3b3JrLCB3ZSBuZWVkIHRvIGFkZCBhIGNvbHVtbiB3aXRoIGNvb2tpbmcgY2F0ZWdvcnkgYW5kIGEgY29sdW1uIHdpdGggbG5SUg0KDQoNCiMjIyMjIFdhdGVyIGJhc2VkDQoNCmZ1bGxfbW9kZWxfd2F0ZXJfdm9sLnNlbnMgPC0gcnVuX21vZGVsKHdhdGVyX2RhdC5zZW5zLCB+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfUmF0aW9fbGlxdWlkX2Zpc2gwKQ0KDQpwcmVkX3dhdGVyX3ZvbC5zZW5zIDwtIHByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfd2F0ZXJfdm9sLnNlbnMsIGFkZHggPSBUUlVFLCBuZXdtb2RzID0gY2JpbmQoMCwNCiAgICAwLCB3YXRlcl9kYXQuc2VucyRsb2dfUmF0aW9fbGlxdWlkX2Zpc2gwKSkgICMgU2V0IGFsbCBwcmVkaWN0b3JzIHRvIHRoZWlyIG1lYW4gKG1lYW4gPTAgd2hlbiB6LXRyYW5zZm9ybWVkKSBhbmQgc2V0IHRoZSByYW5nZSBvZiB2YWx1ZXMgb2YgY29va2luZyB0aW1lDQoNCnByZWRfd2F0ZXJfdm9sLnNlbnMgPC0gYXMuZGF0YS5mcmFtZShwcmVkX3dhdGVyX3ZvbC5zZW5zKQ0KcHJlZF93YXRlcl92b2wuc2VucyA8LSBwcmVkX3dhdGVyX3ZvbC5zZW5zICU+JQ0KICAgIG11dGF0ZShSYXRpb19saXF1aWRfZmlzaF8wID0gZXhwKFgubG9nX1JhdGlvX2xpcXVpZF9maXNoMCkgLSAxLCBDb29raW5nX0NhdGVnb3J5ID0gIndhdGVyLWJhc2VkIiwNCiAgICAgICAgbG5SUiA9IDApDQoNCmBgYA0KDQpUaGUgY29kZSBydW5zLCBidXQgY2FuJ3QgYmUga25pdHRlZCBmb3Igc29tZSByZWFzb24NCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMCwgZXZhbD1GfQ0KZ2dwbG90KGRhdC5zZW5zLCBhZXMoeCA9IGxvZyhSYXRpb19saXF1aWRfZmlzaF8wICsgMSksIHkgPSBsblJSLCBmaWxsID0gQ29va2luZ19DYXRlZ29yeSkpICsNCg0KZ2VvbV9yaWJib24oZGF0YSA9IHByZWRfd2F0ZXJfdm9sLnNlbnMsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiwgY29sb3IgPSBOVUxMKSwNCiAgICBhbHBoYSA9IDAuMikgKyBnZW9tX2xpbmUoZGF0YSA9IHByZWRfd2F0ZXJfdm9sLnNlbnMsIGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbCA9ICJkb2RnZXJibHVlIikgKw0KDQpnZW9tX3JpYmJvbihkYXRhID0gcHJlZF9vaWxfdm9sLnNlbnMsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiwgY29sb3IgPSBOVUxMKSwNCiAgICBhbHBoYSA9IDAuMykgKyBnZW9tX2xpbmUoZGF0YSA9IHByZWRfb2lsX3ZvbC5zZW5zLCBhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2wgPSAiZ29sZGVucm9kIikgKw0KDQoNCmdlb21fcG9pbnQoYWVzKHNpemUgPSAoMS9zcXJ0KHZhcl9sblJSKSksIGZpbGwgPSBDb29raW5nX0NhdGVnb3J5KSwgc2hhcGUgPSAyMSwgYWxwaGEgPSAwLjgpICsNCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjNTVDNjY3RkYiLCAiZ29sZGVucm9kMiIsICJkb2RnZXJibHVlMyIpKSArIGxhYnMoeCA9ICJsbihMaXF1aWQvYW5pbWFsIHRpc3N1ZSByYXRpbyArIDEpIChtTC9nKSIsDQogICAgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZSA9IGMoMSwgMTApKSArDQogICAgdGhlbWVfYncoKSArIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIiwgYWxwaGEgPSAwLjUpICsNCiAgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUpLCBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLA0KICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsIHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLCBmaWxsID0gTkEsDQogICAgICAgICAgICBzaXplID0gMS4yKSkNCmBgYA0KDQoNCiMjIyBQRkFTIGNhcmJvbiBjaGFpbiANCg0KYGBge3IsIGZpZy53aWR0aD05LCBmaWcuaGVpZ2h0PTd9DQpkYXQuc2Vucy5QRkFTPC1maWx0ZXIoZGF0LnNlbnMsIFBGQVNfY2FyYm9uX2NoYWluIT0iTkEiKQ0KVkNWX2xuUlIuc2Vucy5QRkFTPC1tYWtlX1ZDVl9tYXRyaXgoZGF0LnNlbnMuUEZBUywgViA9ICJ2YXJfbG5SUiIsIGNsdXN0ZXIgPSAiQ29ob3J0X0lEIiwgb2JzID0gIkVmZmVjdF9JRCIsIHJobyA9IDAuNSkgIyBjcmVhdGUgVkNWIG1hdHJpeCBmb3IgdGhlIHNwZWNpZmllZCBkYXRhDQoNCg0KbW9kLnNlbnMuUEZBUzwtIHJtYS5tdihsblJSLCBWQ1ZfbG5SUi5zZW5zLlBGQVMsIA0KICAgICAgICAgbW9kcz1+IFBGQVNfY2FyYm9uX2NoYWluLA0KICAgICAgICAgcmFuZG9tID0gbGlzdCh+MXxTdHVkeV9JRCwNCiAgICAgICAgICAgICAgICAgICAgICAgfjF8U3BlY2llc19jb21tb24sIA0KICAgICAgICAgICAgICAgICAgICAgICB+MXxQRkFTX3R5cGUsIA0KICAgICAgICAgICAgICAgICAgICAgICB+MXxFZmZlY3RfSUQpLCANCiAgICAgICAgIHRlc3QgPSAidCIsIA0KICAgICAgICAgZGF0YSA9IGRhdC5zZW5zLlBGQVMpDQpzdW1tYXJ5KG1vZC5zZW5zLlBGQVMpDQoNCnBsb3RfY29udGludW91cyhkYXQuc2Vucy5QRkFTLCBtb2Quc2Vucy5QRkFTLCBkYXQuc2Vucy5QRkFTJFBGQVNfY2FyYm9uX2NoYWluLCAiUEZBUyBjYXJib24gY2hhaW4gbGVuZ3RoIikgIyBUaGUgcmVsYXRpb25zaGlwIHdpdGggY29va2luZyB0aW1lIGFwcGVhcnMgZXZlbiBzdHJvbmdlcg0KDQpgYGANCg0KDQojIyMjIyBQcmVkaWN0aW9ucyBmcm9tIHRoZSBmdWxsIG1vZGVsLCBmb3IgZWFjaCBjb29raW5nIGNhdGVnb3J5DQoNCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMH0NCiMjIyMgT2lsIGJhc2VkDQpmdWxsX21vZGVsX29pbF9QRkFTLnNlbnM8LSBydW5fbW9kZWwob2lsX2RhdC5zZW5zLCB+IHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGQVNfY2FyYm9uX2NoYWluICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpKSkNCg0KcHJlZF9vaWxfUEZBUy5zZW5zPC1wcmVkaWN0LnJtYShmdWxsX21vZGVsX29pbF9QRkFTLnNlbnMsIGFkZHg9VFJVRSwgbmV3bW9kcz1jYmluZCgwLDAsIG9pbF9kYXQuc2VucyRQRkFTX2NhcmJvbl9jaGFpbiwwKSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBQRkFTIGNhcmJvbiBjaGFpbg0KcHJlZF9vaWxfUEZBUy5zZW5zPC1hcy5kYXRhLmZyYW1lKHByZWRfb2lsX1BGQVMuc2VucykNCnByZWRfb2lsX1BGQVMuc2VucyRQRkFTX2NhcmJvbl9jaGFpbj1wcmVkX29pbF9QRkFTLnNlbnMkWC5QRkFTX2NhcmJvbl9jaGFpbg0KcHJlZF9vaWxfUEZBUy5zZW5zPC1sZWZ0X2pvaW4ob2lsX2RhdC5zZW5zLCBwcmVkX29pbF9QRkFTLnNlbnMsIGJ5PSJQRkFTX2NhcmJvbl9jaGFpbiIpDQoNCg0KIyMjIyMgV2F0ZXIgYmFzZWQNCmZ1bGxfbW9kZWxfd2F0ZXJfUEZBUy5zZW5zPC0gcnVuX21vZGVsKHdhdGVyX2RhdC5zZW5zLCB+IHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGQVNfY2FyYm9uX2NoYWluICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpKSkNCg0KcHJlZF93YXRlcl9QRkFTLnNlbnM8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfd2F0ZXJfUEZBUy5zZW5zLCBhZGR4PVRSVUUsIG5ld21vZHM9Y2JpbmQoMCwgd2F0ZXJfZGF0LnNlbnMkUEZBU19jYXJib25fY2hhaW4sMCkpICMgU2V0IGFsbCBwcmVkaWN0b3JzIHRvIHRoZWlyIG1lYW4gKG1lYW4gPTAgd2hlbiB6LXRyYW5zZm9ybWVkKSBhbmQgc2V0IHRoZSByYW5nZSBvZiB2YWx1ZXMgb2YgY29va2luZyB0aW1lDQpwcmVkX3dhdGVyX1BGQVMuc2VuczwtYXMuZGF0YS5mcmFtZShwcmVkX3dhdGVyX1BGQVMuc2VucykNCnByZWRfd2F0ZXJfUEZBUy5zZW5zJFBGQVNfY2FyYm9uX2NoYWluPXByZWRfd2F0ZXJfUEZBUy5zZW5zJFguUEZBU19jYXJib25fY2hhaW4NCnByZWRfd2F0ZXJfUEZBUy5zZW5zPC1sZWZ0X2pvaW4od2F0ZXJfZGF0LnNlbnMsIHByZWRfd2F0ZXJfUEZBUy5zZW5zLCBieT0iUEZBU19jYXJib25fY2hhaW4iKQ0KDQojIyMjIyBObyBsaXF1aWQgDQoNCmZ1bGxfbW9kZWxfZHJ5X1BGQVMuc2VuczwtIHJ1bl9tb2RlbChkcnlfZGF0LnNlbnMsIH4gUEZBU19jYXJib25fY2hhaW4pDQoNCnByZWRfZHJ5X1BGQVMuc2VuczwtcHJlZGljdC5ybWEoZnVsbF9tb2RlbF9kcnlfUEZBUy5zZW5zLCBhZGR4PVRSVUUpDQpwcmVkX2RyeV9QRkFTLnNlbnM8LWFzLmRhdGEuZnJhbWUocHJlZF9kcnlfUEZBUy5zZW5zKQ0KcHJlZF9kcnlfUEZBUy5zZW5zJFBGQVNfY2FyYm9uX2NoYWluPXByZWRfZHJ5X1BGQVMuc2VucyRYLlBGQVNfY2FyYm9uX2NoYWluDQpwcmVkX2RyeV9QRkFTLnNlbnM8LWxlZnRfam9pbihkcnlfZGF0LnNlbnMsIHByZWRfZHJ5X1BGQVMuc2VucywgYnk9IlBGQVNfY2FyYm9uX2NoYWluIikNCg0KDQoNCmdncGxvdChkYXQuc2VucyxhZXMoeCA9IFBGQVNfY2FyYm9uX2NoYWluLCB5ID0gbG5SUiwgZmlsbD1Db29raW5nX0NhdGVnb3J5KSkgKw0KICANCiAgICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfZHJ5X1BGQVMuc2VucywgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfZHJ5X1BGQVMuc2VucyxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2w9InBhbGVncmVlbjMiKSsgIA0KICANCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX3dhdGVyX1BGQVMuc2VucywgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfd2F0ZXJfUEZBUy5zZW5zLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZG9kZ2VyYmx1ZSIpKyAgDQogIA0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfb2lsX1BGQVMuc2VucywgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMykgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfb2lsX1BGQVMuc2VucyxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2w9ImdvbGRlbnJvZCIpKyAgDQogIA0KICANCiAgICAgICBnZW9tX3BvaW50KGFlcyhzaXplPSgxL3NxcnQodmFyX2xuUlIpKSwgZmlsbD1Db29raW5nX0NhdGVnb3J5KSwgc2hhcGU9MjEsIGFscGhhPTAuOCkgKw0KICAgICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCIjNTVDNjY3RkYiLCAiZ29sZGVucm9kMiIsICJkb2RnZXJibHVlMyIpKSsNCiAgICAgICBsYWJzKHggPSAiUEZBUyBjYXJib24gY2hhaW4gbGVuZ3RoIiwgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIA0KICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2U9YygxLDEwKSkrDQogIHRoZW1lX2J3KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgICMgaG9yaXpvbnRhbCBsaW5lIGF0IGxuUlIgPSAwDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4LCBjb2xvdXIgPSAiYmxhY2siLCBoanVzdCA9IDAuNSksICMgY2hhbmdlIGZvbnQgc2l6ZXMgYW5kIGxlZ2VuZCBwb3NpdGlvbg0KICAgICAgICAgIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTE0KSwNCiAgICAgICAgICBsZWdlbmQucG9zaXRpb249Im5vbmUiLA0KICAgICAgICAgIHBhbmVsLmJvcmRlcj1lbGVtZW50X3JlY3QoY29sb3VyPSJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4yKSkNCmBgYA0KDQoNCiMjIyBGdW5uZWwgcGxvdCANCg0KYGBge3IsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTd9DQpmdWxsX21vZC5zZW5zPC1ydW5fbW9kZWwoZGF0LnNlbnMsIH4gLTEgKyAgQ29va2luZ19DYXRlZ29yeSAgKyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cykgKyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKSArIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShQRkFTX2NhcmJvbl9jaGFpbikgKyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoXzAgKyAxKSkpDQoNCg0KZnVubmVsKGZ1bGxfbW9kLnNlbnMsIHlheGlzPSJzZWludiIpDQpgYGANCg0KDQojIw0KDQoNCiMgKipGaWd1cmVzIGZvciBwdWJsaWNhdGlvbioqIA0KDQpBbGwgZmlndXJlcyBpbiB0aGUgcHVibGljYXRpb24gd2VyZSBnZW5lcmF0ZWQgdXNpbmcgZXN0aW1hdGVzIGZyb20gbW9kZWxzIHRha2luZyB0aGUgbGlxdWlkL2FuaW1hbCB0aXNzdWUgcmF0aW8gYXMgIjAiIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkuIA0KDQojIyBGaWd1cmUgMg0KDQojIyMgRmlndXJlIDJBDQoNCmBgYHtyLCBmaWcud2lkdGg9OSwgZmlnLmhlaWdodD03fQ0KZnVsbF9tb2RlbF90aW1lMDwtIHJ1bl9tb2RlbChkYXQsIH4gICAgIHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aF9jb29raW5nX3RpbWVfaW5fcysNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpKSkNCg0KcHJlZF9mdWxsX21vZGVsX3RpbWUwPC1wcmVkaWN0LnJtYShmdWxsX21vZGVsX3RpbWUwLCBhZGR4PVRSVUUsIG5ld21vZHM9Y2JpbmQoMCxkYXQkTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zLCAwLCAwKSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfZnVsbF9tb2RlbF90aW1lMDwtYXMuZGF0YS5mcmFtZShwcmVkX2Z1bGxfbW9kZWxfdGltZTApDQpwcmVkX2Z1bGxfbW9kZWxfdGltZTAkTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zPXByZWRfZnVsbF9tb2RlbF90aW1lMCRYLkxlbmd0aF9jb29raW5nX3RpbWVfaW5fcw0KcHJlZF9mdWxsX21vZGVsX3RpbWUwPC1sZWZ0X2pvaW4oZGF0LCBwcmVkX2Z1bGxfbW9kZWxfdGltZTAsIGJ5PSJMZW5ndGhfY29va2luZ190aW1lX2luX3MiKQ0KDQoNCg0KdW5pX21vZGVsX3RpbWU8LSBydW5fbW9kZWwoZGF0LCB+IExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykNCg0KcHJlZF91bmlfbW9kZWxfdGltZTwtcHJlZGljdC5ybWEodW5pX21vZGVsX3RpbWUsIGFkZHg9VFJVRSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfdW5pX21vZGVsX3RpbWU8LWFzLmRhdGEuZnJhbWUocHJlZF91bmlfbW9kZWxfdGltZSkNCnByZWRfdW5pX21vZGVsX3RpbWUkTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zPXByZWRfdW5pX21vZGVsX3RpbWUkWC5MZW5ndGhfY29va2luZ190aW1lX2luX3MNCnByZWRfdW5pX21vZGVsX3RpbWU8LWxlZnRfam9pbihkYXQsIHByZWRfdW5pX21vZGVsX3RpbWUsIGJ5PSJMZW5ndGhfY29va2luZ190aW1lX2luX3MiKQ0KDQoNCg0KcF90aW1lMDwtZ2dwbG90KGRhdCxhZXMoeCA9IExlbmd0aF9jb29raW5nX3RpbWVfaW5fcywgeSA9IGxuUlIpKSArDQogIA0KICAgICAgIGdlb21fcG9pbnQoYWVzKHNpemU9KDEvc3FydCh2YXJfbG5SUikpKSwgc2hhcGU9MjEsIGFscGhhPTAuOCwgZmlsbD0iZ3JheTc1IikgKw0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfZnVsbF9tb2RlbF90aW1lMCwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViKSwgYWxwaGEgPSAwLjI1LCBmaWxsPSJvcmFuZ2VyZWQiKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9mdWxsX21vZGVsX3RpbWUwLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbG9yPSJvcmFuZ2VyZWQyIikrICANCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX3VuaV9tb2RlbF90aW1lLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIpLCBhbHBoYT0wLjI1LCBmaWxsPSJncmF5NDAiKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF91bmlfbW9kZWxfdGltZSxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2w9ImdyYXkzMCIpKyAgDQogIA0KICAgICAgIGxhYnMoeCA9ICJDb29raW5nIHRpbWUgKHMpIiwgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIA0KICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2U9YygxLDEwKSkrDQogIHRoZW1lX2J3KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgICMgaG9yaXpvbnRhbCBsaW5lIGF0IGxuUlIgPSAwDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4LCBjb2xvdXIgPSAiYmxhY2siLCBoanVzdCA9IDAuNSksICMgY2hhbmdlIGZvbnQgc2l6ZXMgYW5kIGxlZ2VuZCBwb3NpdGlvbg0KICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIsDQogICAgICAgICAgcGFuZWwuYm9yZGVyPWVsZW1lbnRfcmVjdChjb2xvdXI9ImJsYWNrIiwgZmlsbD1OQSwgc2l6ZT0xLjIpKQ0KYGBgDQoNCg0KIyMjIEZpZ3VyZSAyQg0KDQoNCmBgYHtyLCBmaWcud2lkdGg9OSwgZmlnLmhlaWdodD03fQ0KZnVsbF9tb2RlbF92b2wwPC0gcnVuX21vZGVsKGRhdCwgfiAgICAgc2NhbGUoVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cykgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKSsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfUmF0aW9fbGlxdWlkX2Zpc2gwKQ0KDQpwcmVkX2Z1bGxfbW9kZWxfdm9sMDwtcHJlZGljdC5ybWEoZnVsbF9tb2RlbF92b2wwLCBhZGR4PVRSVUUsIG5ld21vZHM9Y2JpbmQoMCwwLCAwLCBkYXQkbG9nX1JhdGlvX2xpcXVpZF9maXNoMCkpDQpwcmVkX2Z1bGxfbW9kZWxfdm9sMDwtYXMuZGF0YS5mcmFtZShwcmVkX2Z1bGxfbW9kZWxfdm9sMCkNCnByZWRfZnVsbF9tb2RlbF92b2wwJGxvZ19SYXRpb19saXF1aWRfZmlzaDA9cHJlZF9mdWxsX21vZGVsX3ZvbDAkWC5sb2dfUmF0aW9fbGlxdWlkX2Zpc2gNCnByZWRfZnVsbF9tb2RlbF92b2wwPC0gcHJlZF9mdWxsX21vZGVsX3ZvbDAgJT4lIG11dGF0ZShSYXRpb19saXF1aWRfZmlzaCA9IGV4cChYLmxvZ19SYXRpb19saXF1aWRfZmlzaDApLTEsIGxuUlIgPSAwKSANCg0KDQoNCnVuaV9tb2RlbF92b2wwPC0gcnVuX21vZGVsKGRhdCwgfiBsb2dfUmF0aW9fbGlxdWlkX2Zpc2gwKQ0KDQpwcmVkX3VuaV9tb2RlbF92b2wwPC1wcmVkaWN0LnJtYSh1bmlfbW9kZWxfdm9sMCwgYWRkeD1UUlVFKSAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIGNvb2tpbmcgdGltZQ0KcHJlZF91bmlfbW9kZWxfdm9sMDwtYXMuZGF0YS5mcmFtZShwcmVkX3VuaV9tb2RlbF92b2wwKQ0KcHJlZF91bmlfbW9kZWxfdm9sMCRsb2dfUmF0aW9fbGlxdWlkX2Zpc2gwPXByZWRfdW5pX21vZGVsX3ZvbDAkWC5sb2dfUmF0aW9fbGlxdWlkX2Zpc2gNCnByZWRfdW5pX21vZGVsX3ZvbDA8LSBwcmVkX3VuaV9tb2RlbF92b2wwICU+JSBtdXRhdGUoUmF0aW9fbGlxdWlkX2Zpc2ggPSBleHAoWC5sb2dfUmF0aW9fbGlxdWlkX2Zpc2gwKSAtMSwgbG5SUiA9IDApIA0KDQoNCg0KcF92b2wwPC1nZ3Bsb3QoZGF0LGFlcyh4ID0gbG9nX1JhdGlvX2xpcXVpZF9maXNoMCwgeSA9IGxuUlIpKSArDQogIA0KICAgICAgIGdlb21fcG9pbnQoYWVzKHNpemU9KDEvc3FydCh2YXJfbG5SUikpKSwgc2hhcGU9MjEsIGFscGhhPTAuOCwgZmlsbD0iZ3JheTc1IikgKw0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfZnVsbF9tb2RlbF92b2wwLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIpLCBhbHBoYSA9IDAuMjUsIGZpbGw9Im9yYW5nZXJlZCIpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX2Z1bGxfbW9kZWxfdm9sMCxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2xvcj0ib3JhbmdlcmVkMiIpKyAgDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF91bmlfbW9kZWxfdm9sMCwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViKSwgYWxwaGE9MC4yNSwgZmlsbD0iZ3JheTQwIikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfdW5pX21vZGVsX3ZvbDAsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sPSJncmF5MzAiKSsgIA0KICANCiAgICAgICBsYWJzKHggPSAibG4gKExpcXVpZC9hbmltYWwgdGlzc3VlIHJhdGlvICsgMSkgKG1ML2cpIiwgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIA0KICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2U9YygxLDEwKSkrDQogIHRoZW1lX2J3KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgICMgaG9yaXpvbnRhbCBsaW5lIGF0IGxuUlIgPSAwDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4LCBjb2xvdXIgPSAiYmxhY2siLCBoanVzdCA9IDAuNSksICMgY2hhbmdlIGZvbnQgc2l6ZXMgYW5kIGxlZ2VuZCBwb3NpdGlvbg0KICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIsIA0KICAgICAgICAgIHBhbmVsLmJvcmRlcj1lbGVtZW50X3JlY3QoY29sb3VyPSJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4yKSkNCmBgYA0KDQoNCiMjIyBGaWd1cmUgMkMNCg0KYGBge3IsIGZpZy53aWR0aD05LCBmaWcuaGVpZ2h0PTd9DQpmdWxsX21vZGVsX3RlbXAwPC0gcnVuX21vZGVsKGRhdCwgfiAgICAgVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUEZBU19jYXJib25fY2hhaW4pICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKGxvZyhSYXRpb19saXF1aWRfZmlzaF8wICsgMSkpKQ0KDQpwcmVkX2Z1bGxfbW9kZWxfdGVtcDA8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfdGVtcDAsIGFkZHg9VFJVRSwgbmV3bW9kcz1jYmluZChkYXQkVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cywwLCAwLCAwKSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfZnVsbF9tb2RlbF90ZW1wMDwtYXMuZGF0YS5mcmFtZShwcmVkX2Z1bGxfbW9kZWxfdGVtcDApDQpwcmVkX2Z1bGxfbW9kZWxfdGVtcDAkVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cz1wcmVkX2Z1bGxfbW9kZWxfdGVtcDAkWC5UZW1wZXJhdHVyZV9pbl9DZWxzaXVzDQpwcmVkX2Z1bGxfbW9kZWxfdGVtcDA8LWxlZnRfam9pbihkYXQsIHByZWRfZnVsbF9tb2RlbF90ZW1wMCwgYnk9IlRlbXBlcmF0dXJlX2luX0NlbHNpdXMiKQ0KDQoNCg0KdW5pX21vZGVsX3RlbXA8LSBydW5fbW9kZWwoZGF0LCB+IFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpDQoNCnByZWRfdW5pX21vZGVsX3RlbXA8LXByZWRpY3Qucm1hKHVuaV9tb2RlbF90ZW1wLCBhZGR4PVRSVUUpICMgU2V0IGFsbCBwcmVkaWN0b3JzIHRvIHRoZWlyIG1lYW4gKG1lYW4gPTAgd2hlbiB6LXRyYW5zZm9ybWVkKSBhbmQgc2V0IHRoZSByYW5nZSBvZiB2YWx1ZXMgb2YgY29va2luZyB0aW1lDQpwcmVkX3VuaV9tb2RlbF90ZW1wPC1hcy5kYXRhLmZyYW1lKHByZWRfdW5pX21vZGVsX3RlbXApDQpwcmVkX3VuaV9tb2RlbF90ZW1wJFRlbXBlcmF0dXJlX2luX0NlbHNpdXM9cHJlZF91bmlfbW9kZWxfdGVtcCRYLlRlbXBlcmF0dXJlX2luX0NlbHNpdXMNCnByZWRfdW5pX21vZGVsX3RlbXA8LWxlZnRfam9pbihkYXQsIHByZWRfdW5pX21vZGVsX3RlbXAsIGJ5PSJUZW1wZXJhdHVyZV9pbl9DZWxzaXVzIikNCg0KDQoNCnBfdGVtcDA8LWdncGxvdChkYXQsYWVzKHggPSBUZW1wZXJhdHVyZV9pbl9DZWxzaXVzLCB5ID0gbG5SUikpICsNCiAgDQogICAgICAgZ2VvbV9wb2ludChhZXMoc2l6ZT0oMS9zcXJ0KHZhcl9sblJSKSkpLCBzaGFwZT0yMSwgYWxwaGE9MC44LCBmaWxsPSJncmF5NzUiKSArDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF9mdWxsX21vZGVsX3RlbXAwLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIpLCBhbHBoYSA9IDAuMjUsIGZpbGw9Im9yYW5nZXJlZCIpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX2Z1bGxfbW9kZWxfdGVtcDAsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sb3I9Im9yYW5nZXJlZDIiKSsgIA0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfdW5pX21vZGVsX3RlbXAsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiksIGFscGhhPTAuMjUsIGZpbGw9ImdyYXk0MCIpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX3VuaV9tb2RlbF90ZW1wLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZ3JheTMwIikrICANCiAgDQogICAgICAgbGFicyh4ID0gIkNvb2tpbmcgdGVtcGVyYXR1cmUgKMKwQykiLCB5ID0gImxuUlIiLCBzaXplID0gIlByZWNpc29uICgxL1NFKSIpICsgDQogIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZT1jKDEsMTApKSsNCiAgdGhlbWVfYncoKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsbGluZXR5cGUgPSAyLCBjb2xvdXIgPSAiYmxhY2siLGFscGhhPTAuNSkrICAgIyBob3Jpem9udGFsIGxpbmUgYXQgbG5SUiA9IDANCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgsIGNvbG91ciA9ICJibGFjayIsIGhqdXN0ID0gMC41KSwgIyBjaGFuZ2UgZm9udCBzaXplcyBhbmQgbGVnZW5kIHBvc2l0aW9uDQogICAgICAgICAgbGVnZW5kLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTQpLA0KICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbj1jKDEsMCksIA0KICAgICAgICAgIGxlZ2VuZC5qdXN0aWZpY2F0aW9uID0gYygxLDApLA0KICAgICAgICAgIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpLCANCiAgICAgICAgICBsZWdlbmQuZGlyZWN0aW9uPSJ2ZXJ0aWNhbCIsDQogICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9MTUpLCANCiAgICAgICAgICBwYW5lbC5ib3JkZXI9ZWxlbWVudF9yZWN0KGNvbG91cj0iYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMikpDQpgYGANCg0KDQojIyMgRmlndXJlIDJEDQoNCmBgYHtyLCBmaWcud2lkdGg9OSwgZmlnLmhlaWdodD03fQ0KZnVsbF9tb2RlbF9QRkFTMDwtIHJ1bl9tb2RlbChkYXQsIH4gICAgIHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRkFTX2NhcmJvbl9jaGFpbiArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpKSkNCg0KcHJlZF9mdWxsX21vZGVsX1BGQVMwPC1wcmVkaWN0LnJtYShmdWxsX21vZGVsX1BGQVMwLCBhZGR4PVRSVUUsIG5ld21vZHM9Y2JpbmQoMCwgMCwgZGF0JFBGQVNfY2FyYm9uX2NoYWluLCAwKSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfZnVsbF9tb2RlbF9QRkFTMDwtYXMuZGF0YS5mcmFtZShwcmVkX2Z1bGxfbW9kZWxfUEZBUzApDQpwcmVkX2Z1bGxfbW9kZWxfUEZBUzAkUEZBU19jYXJib25fY2hhaW49cHJlZF9mdWxsX21vZGVsX1BGQVMwJFguUEZBU19jYXJib25fY2hhaW4NCnByZWRfZnVsbF9tb2RlbF9QRkFTMDwtbGVmdF9qb2luKGRhdCwgcHJlZF9mdWxsX21vZGVsX1BGQVMwLCBieT0iUEZBU19jYXJib25fY2hhaW4iKQ0KDQoNCg0KdW5pX21vZGVsX1BGQVM8LSBydW5fbW9kZWwoZGF0LCB+IFBGQVNfY2FyYm9uX2NoYWluKQ0KDQpwcmVkX3VuaV9tb2RlbF9QRkFTPC1wcmVkaWN0LnJtYSh1bmlfbW9kZWxfUEZBUywgYWRkeD1UUlVFKSAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIGNvb2tpbmcgdGltZQ0KcHJlZF91bmlfbW9kZWxfUEZBUzwtYXMuZGF0YS5mcmFtZShwcmVkX3VuaV9tb2RlbF9QRkFTKQ0KcHJlZF91bmlfbW9kZWxfUEZBUyRQRkFTX2NhcmJvbl9jaGFpbj1wcmVkX3VuaV9tb2RlbF9QRkFTJFguUEZBU19jYXJib25fY2hhaW4NCnByZWRfdW5pX21vZGVsX1BGQVM8LWxlZnRfam9pbihkYXQsIHByZWRfdW5pX21vZGVsX1BGQVMsIGJ5PSJQRkFTX2NhcmJvbl9jaGFpbiIpDQoNCg0KDQpwX1BGQVMwPC1nZ3Bsb3QoZGF0LGFlcyh4ID0gUEZBU19jYXJib25fY2hhaW4sIHkgPSBsblJSKSkgKw0KICANCiAgICAgICBnZW9tX3BvaW50KGFlcyhzaXplPSgxL3NxcnQodmFyX2xuUlIpKSksIHNoYXBlPTIxLCBhbHBoYT0wLjgsIGZpbGw9ImdyYXk3NSIpICsNCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX2Z1bGxfbW9kZWxfUEZBUzAsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiksIGFscGhhID0gMC4yNSwgZmlsbD0ib3JhbmdlcmVkIikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfZnVsbF9tb2RlbF9QRkFTMCxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2xvcj0ib3JhbmdlcmVkMiIpKyAgDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF91bmlfbW9kZWxfUEZBUywgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViKSwgYWxwaGE9MC4yNSwgZmlsbD0iZ3JheTQwIikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfdW5pX21vZGVsX1BGQVMsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sPSJncmF5MzAiKSsgIA0KICANCiAgICAgICBsYWJzKHggPSAiUEZBUyBjYXJib24gY2hhaW4gbGVuZ3RoIiwgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIA0KICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2U9YygxLDEwKSkrDQogIHRoZW1lX2J3KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgICMgaG9yaXpvbnRhbCBsaW5lIGF0IGxuUlIgPSAwDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4LCBjb2xvdXIgPSAiYmxhY2siLCBoanVzdCA9IDAuNSksICMgY2hhbmdlIGZvbnQgc2l6ZXMgYW5kIGxlZ2VuZCBwb3NpdGlvbg0KICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIsDQogICAgICAgICAgcGFuZWwuYm9yZGVyPWVsZW1lbnRfcmVjdChjb2xvdXI9ImJsYWNrIiwgZmlsbD1OQSwgc2l6ZT0xLjIpKQ0KYGBgDQojIyMgQ29tYmluZSBwbG90cyBhbmQgc2F2ZQ0KDQpgYGB7ciwgZmlnLndpZHRoPTE1LCBmaWcuaGVpZ2h0PTEyfQ0KKHBfdGltZTArcF92b2wwKS8ocF90ZW1wMCtwX1BGQVMwKSArIHBsb3RfYW5ub3RhdGlvbih0YWdfbGV2ZWxzPWMoJ0EnLCAnQicsICdDJywgJ0QnKSkNCmBgYA0KDQpgYGB7ciwgZXZhbD1GfQ0KZ2dzYXZlKCJmaWcvRmlnXzIucG5nIiwgd2lkdGg9MTUsIGhlaWdodD0xMiwgZHBpPTEyMDApDQpgYGANCg0KDQoNCiMjIEZpZ3VyZSAzDQoNCiMjIyBBZGFwdCBvcmNoYXJkX3Bsb3QgZnVuY3Rpb24NCg0KYGBge3J9DQpteV9vcmNoYXJkPC0gZnVuY3Rpb24gKG9iamVjdCwgbW9kID0gIjEiLCBncm91cCwgZGF0YSwgeGxhYiwgTiA9ICJub25lIiwgDQogICAgYWxwaGEgPSAwLjUsIGFuZ2xlID0gOTAsIGNiID0gRkFMU0UsIGsgPSBUUlVFLCBnID0gVFJVRSwgDQogICAgdHJ1bmsuc2l6ZSA9IDMsIGJyYW5jaC5zaXplID0gMS4yLCB0d2lnLnNpemUgPSAwLjUsIHRyYW5zZm0gPSBjKCJub25lIiwgDQogICAgICAgICJ0YW5oIiksIGNvbmRpdGlvbi5sYWIgPSAiQ29uZGl0aW9uIiwgbGVnZW5kLnBvcyA9IGMoImJvdHRvbS5yaWdodCIsIA0KICAgICAgICAiYm90dG9tLmxlZnQiLCAidG9wLnJpZ2h0IiwgInRvcC5sZWZ0IiwgDQogICAgICAgICJ0b3Aub3V0IiwgImJvdHRvbS5vdXQiKSwgay5wb3MgPSBjKCJyaWdodCIsIA0KICAgICAgICAibGVmdCIpLCB3ZWlnaHRzID0gInByb3AiLCBieSA9IE5VTEwsIGF0ID0gTlVMTCkgDQp7DQogICAgdHJhbnNmbSA8LSBtYXRjaC5hcmcoTlVMTCwgY2hvaWNlcyA9IHRyYW5zZm0pDQogICAgbGVnZW5kLnBvcyA8LSBtYXRjaC5hcmcoTlVMTCwgY2hvaWNlcyA9IGxlZ2VuZC5wb3MpDQogICAgay5wb3MgPC0gbWF0Y2guYXJnKE5VTEwsIGNob2ljZXMgPSBrLnBvcykNCiAgICBpZiAoYW55KGNsYXNzKG9iamVjdCkgJWluJSBjKCJybWEubXYiLCAicm1hIikpKSB7DQogICAgICAgIGlmIChtb2QgIT0gIjEiKSB7DQogICAgICAgICAgICByZXN1bHRzIDwtIG9yY2hhUmQ6Om1vZF9yZXN1bHRzKG9iamVjdCwgbW9kLCBncm91cCwgDQogICAgICAgICAgICAgICAgZGF0YSwgYnkgPSBieSwgYXQgPSBhdCwgd2VpZ2h0cyA9IHdlaWdodHMpDQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICByZXN1bHRzIDwtIG9yY2hhUmQ6Om1vZF9yZXN1bHRzKG9iamVjdCwgbW9kID0gIjEiLCANCiAgICAgICAgICAgICAgICBncm91cCwgZGF0YSwgYnkgPSBieSwgYXQgPSBhdCwgd2VpZ2h0cyA9IHdlaWdodHMpDQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKGFueShjbGFzcyhvYmplY3QpICVpbiUgYygib3JjaGFyZCIpKSkgew0KICAgICAgICByZXN1bHRzIDwtIG9iamVjdA0KICAgIH0NCiAgICBtb2RfdGFibGUgPC0gcmVzdWx0cyRtb2RfdGFibGUNCiAgICBkYXRhX3RyaW0gPC0gcmVzdWx0cyRkYXRhDQogICAgZGF0YV90cmltJG1vZGVyYXRvciA8LSBmYWN0b3IoZGF0YV90cmltJG1vZGVyYXRvciwgbGV2ZWxzID0gbW9kX3RhYmxlJG5hbWUsIA0KICAgICAgICBsYWJlbHMgPSBtb2RfdGFibGUkbmFtZSkNCiAgICBkYXRhX3RyaW0kc2NhbGUgPC0gKDEvc3FydChkYXRhX3RyaW1bLCAidmkiXSkpDQogICAgbGVnZW5kIDwtICJQcmVjaXNpb24gKDEvU0UpIg0KICAgIGlmIChhbnkoTiAhPSAibm9uZSIpKSB7DQogICAgICAgIGRhdGFfdHJpbSRzY2FsZSA8LSBODQogICAgICAgIGxlZ2VuZCA8LSBwYXN0ZTAoIlNhbXBsZSBTaXplICgiLCAiTiIsICIpIikNCiAgICB9DQogICAgaWYgKHRyYW5zZm0gPT0gInRhbmgiKSB7DQogICAgICAgIGNvbHMgPC0gc2FwcGx5KG1vZF90YWJsZSwgaXMubnVtZXJpYykNCiAgICAgICAgbW9kX3RhYmxlWywgY29sc10gPC0gWnJfdG9fcihtb2RfdGFibGVbLCBjb2xzXSkNCiAgICAgICAgZGF0YV90cmltJHlpIDwtIFpyX3RvX3IoZGF0YV90cmltJHlpKQ0KICAgICAgICBsYWJlbCA8LSB4bGFiDQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICBsYWJlbCA8LSB4bGFiDQogICAgfQ0KICAgIG1vZF90YWJsZSRLIDwtIGFzLnZlY3RvcihieShkYXRhX3RyaW0sIGRhdGFfdHJpbVssICJtb2RlcmF0b3IiXSwgDQogICAgICAgIGZ1bmN0aW9uKHgpIGxlbmd0aCh4WywgInlpIl0pKSkNCiAgICBtb2RfdGFibGUkZyA8LSBhcy52ZWN0b3IobnVtX3N0dWRpZXMoZGF0YV90cmltLCBtb2RlcmF0b3IsIA0KICAgICAgICBzdGR5KVssIDJdKQ0KICAgIGdyb3VwX25vIDwtIGxlbmd0aCh1bmlxdWUobW9kX3RhYmxlWywgIm5hbWUiXSkpDQogICAgY2JwbCA8LSBjKCIjODhDQ0VFIiwgIiNDQzY2NzciLCAiI0REQ0M3NyIsIA0KICAgICAgICAiIzExNzczMyIsICIjMzMyMjg4IiwgIiNBQTQ0OTkiLCAiIzQ0QUE5OSIsIA0KICAgICAgICAiIzk5OTkzMyIsICIjODgyMjU1IiwgIiM2NjExMDAiLCAiIzY2OTlDQyIsIA0KICAgICAgICAiIzg4ODg4OCIsICIjRTY5RjAwIiwgIiM1NkI0RTkiLCAiIzAwOUU3MyIsIA0KICAgICAgICAiI0YwRTQ0MiIsICIjMDA3MkIyIiwgIiNENTVFMDAiLCAiI0NDNzlBNyIsIA0KICAgICAgICAiIzk5OTk5OSIpDQogICAgaWYgKG5hbWVzKG1vZF90YWJsZSlbMl0gPT0gImNvbmRpdGlvbiIpIHsNCiAgICAgICAgY29uZGl0aW9uX25vIDwtIGxlbmd0aCh1bmlxdWUobW9kX3RhYmxlWywgImNvbmRpdGlvbiJdKSkNCiAgICAgICAgcGxvdCA8LSBnZ3Bsb3QyOjpnZ3Bsb3QoKSArIGdnYmVlc3dhcm06Omdlb21fcXVhc2lyYW5kb20oZGF0YSA9IGRhdGFfdHJpbSwgDQogICAgICAgICAgICBnZ3Bsb3QyOjphZXMoeSA9IHlpLCB4ID0gbW9kZXJhdG9yLCBzaXplID0gc2NhbGUsIA0KICAgICAgICAgICAgICAgIGNvbG91ciA9IG1vZGVyYXRvciksIGFscGhhID0gYWxwaGEpICsgZ2dwbG90Mjo6Z2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgDQogICAgICAgICAgICBsaW5ldHlwZSA9IDIsIGNvbG91ciA9ICJibGFjayIsIGFscGhhID0gYWxwaGEpICsgDQogICAgICAgICAgICBnZ3Bsb3QyOjpnZW9tX2xpbmVyYW5nZShkYXRhID0gbW9kX3RhYmxlLCBnZ3Bsb3QyOjphZXMoeCA9IG5hbWUsIA0KICAgICAgICAgICAgICAgIHltaW4gPSBsb3dlckNMLCB5bWF4ID0gdXBwZXJDTCksIHNpemUgPSBicmFuY2guc2l6ZSwgDQogICAgICAgICAgICAgICAgcG9zaXRpb24gPSBnZ3Bsb3QyOjpwb3NpdGlvbl9kb2RnZTIod2lkdGggPSAwLjMpKSArIA0KICAgICAgICAgICAgZ2dwbG90Mjo6Z2VvbV9wb2ludHJhbmdlKGRhdGEgPSBtb2RfdGFibGUsIGdncGxvdDI6OmFlcyh5ID0gZXN0aW1hdGUsIA0KICAgICAgICAgICAgICAgIHggPSBuYW1lLCB5bWluID0gbG93ZXJQUiwgeW1heCA9IHVwcGVyUFIsIHNoYXBlID0gYXMuZmFjdG9yKGNvbmRpdGlvbiksIA0KICAgICAgICAgICAgICAgIGZpbGwgPSBuYW1lKSwgc2l6ZSA9IHR3aWcuc2l6ZSwgc3Ryb2tlPTIuMixwb3NpdGlvbiA9IGdncGxvdDI6OnBvc2l0aW9uX2RvZGdlMih3aWR0aCA9IDAuMyksICMgQWRkZWQgc3Ryb2tlDQogICAgICAgICAgICAgICAgZmF0dGVuID0gdHJ1bmsuc2l6ZSkgKyBnZ3Bsb3QyOjpzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gMjAgKyANCiAgICAgICAgICAgICgxOmNvbmRpdGlvbl9ubykpICsgZ2dwbG90Mjo6Y29vcmRfZmxpcCgpICsgZ2dwbG90Mjo6dGhlbWVfYncoKSArIA0KICAgICAgICAgICAgZ2dwbG90Mjo6Z3VpZGVzKGZpbGwgPSAibm9uZSIsIGNvbG91ciA9ICJub25lIikgKyANCiAgICAgICAgICAgIGdncGxvdDI6OnRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9IGMoMCwgMSksIGxlZ2VuZC5qdXN0aWZpY2F0aW9uID0gYygwLCANCiAgICAgICAgICAgICAgICAxKSkgKyBnZ3Bsb3QyOjp0aGVtZShsZWdlbmQudGl0bGUgPSBnZ3Bsb3QyOjplbGVtZW50X3RleHQoc2l6ZSA9IDkpKSArIA0KICAgICAgICAgICAgZ2dwbG90Mjo6dGhlbWUobGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIikgKyANCiAgICAgICAgICAgIGdncGxvdDI6OnRoZW1lKGxlZ2VuZC5iYWNrZ3JvdW5kID0gZ2dwbG90Mjo6ZWxlbWVudF9ibGFuaygpKSArIA0KICAgICAgICAgICAgZ2dwbG90Mjo6bGFicyh5ID0gbGFiZWwsIHggPSAiIiwgc2l6ZSA9IGxlZ2VuZCwgDQogICAgICAgICAgICAgICAgcGFyc2UgPSBUUlVFKSArIGdncGxvdDI6OmxhYnMoc2hhcGUgPSBjb25kaXRpb24ubGFiKSArIA0KICAgICAgICAgICAgZ2dwbG90Mjo6dGhlbWUoYXhpcy50ZXh0LnkgPSBnZ3Bsb3QyOjplbGVtZW50X3RleHQoc2l6ZSA9IDEwLCANCiAgICAgICAgICAgICAgICBjb2xvdXIgPSAiYmxhY2siLCBoanVzdCA9IDAuNSwgYW5nbGUgPSBhbmdsZSkpDQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICBwbG90IDwtIGdncGxvdDI6OmdncGxvdCgpICsgZ2diZWVzd2FybTo6Z2VvbV9xdWFzaXJhbmRvbShkYXRhID0gZGF0YV90cmltLCANCiAgICAgICAgICAgIGdncGxvdDI6OmFlcyh5ID0geWksIHggPSBtb2RlcmF0b3IsIHNpemUgPSBzY2FsZSwgDQogICAgICAgICAgICAgICAgY29sb3VyID0gbW9kZXJhdG9yKSwgYWxwaGEgPSBhbHBoYSkgKyBnZ3Bsb3QyOjpnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCANCiAgICAgICAgICAgIGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIiwgYWxwaGEgPSBhbHBoYSkgKyANCiAgICAgICAgICAgIGdncGxvdDI6Omdlb21fbGluZXJhbmdlKGRhdGEgPSBtb2RfdGFibGUsIGdncGxvdDI6OmFlcyh4ID0gbmFtZSwgDQogICAgICAgICAgICAgICAgeW1pbiA9IGxvd2VyQ0wsIHltYXggPSB1cHBlckNMKSwgc2l6ZSA9IGJyYW5jaC5zaXplKSArIA0KICAgICAgICAgICAgZ2dwbG90Mjo6Z2VvbV9wb2ludHJhbmdlKGRhdGEgPSBtb2RfdGFibGUsIGdncGxvdDI6OmFlcyh5ID0gZXN0aW1hdGUsIA0KICAgICAgICAgICAgICAgIHggPSBuYW1lLCB5bWluID0gbG93ZXJQUiwgeW1heCA9IHVwcGVyUFIsIGZpbGwgPSBuYW1lKSwgDQogICAgICAgICAgICAgICAgc2l6ZSA9IHR3aWcuc2l6ZSwgZmF0dGVuID0gdHJ1bmsuc2l6ZSwgc2hhcGUgPSAyMSkgKyANCiAgICAgICAgICAgIGdncGxvdDI6OmNvb3JkX2ZsaXAoKSArIGdncGxvdDI6OnRoZW1lX2J3KCkgKyBnZ3Bsb3QyOjpndWlkZXMoZmlsbCA9ICJub25lIiwgDQogICAgICAgICAgICBjb2xvdXIgPSAibm9uZSIpICsgZ2dwbG90Mjo6dGhlbWUobGVnZW5kLnRpdGxlID0gZ2dwbG90Mjo6ZWxlbWVudF90ZXh0KHNpemUgPSA5KSkgKyANCiAgICAgICAgICAgIGdncGxvdDI6OnRoZW1lKGxlZ2VuZC5kaXJlY3Rpb24gPSAiaG9yaXpvbnRhbCIpICsgDQogICAgICAgICAgICBnZ3Bsb3QyOjp0aGVtZShsZWdlbmQuYmFja2dyb3VuZCA9IGdncGxvdDI6OmVsZW1lbnRfYmxhbmsoKSkgKyANCiAgICAgICAgICAgIGdncGxvdDI6OmxhYnMoeSA9IGxhYmVsLCB4ID0gIiIsIHNpemUgPSBsZWdlbmQpICsgDQogICAgICAgICAgICBnZ3Bsb3QyOjp0aGVtZShheGlzLnRleHQueSA9IGdncGxvdDI6OmVsZW1lbnRfdGV4dChzaXplID0gMTAsIA0KICAgICAgICAgICAgICAgIGNvbG91ciA9ICJibGFjayIsIGhqdXN0ID0gMC41LCBhbmdsZSA9IGFuZ2xlKSkNCiAgICB9DQogICAgaWYgKGxlZ2VuZC5wb3MgPT0gImJvdHRvbS5yaWdodCIpIHsNCiAgICAgICAgcGxvdCA8LSBwbG90ICsgZ2dwbG90Mjo6dGhlbWUobGVnZW5kLnBvc2l0aW9uID0gYygxLCANCiAgICAgICAgICAgIDApLCBsZWdlbmQuanVzdGlmaWNhdGlvbiA9IGMoMSwgMCkpDQogICAgfQ0KICAgIGVsc2UgaWYgKGxlZ2VuZC5wb3MgPT0gImJvdHRvbS5sZWZ0Iikgew0KICAgICAgICBwbG90IDwtIHBsb3QgKyBnZ3Bsb3QyOjp0aGVtZShsZWdlbmQucG9zaXRpb24gPSBjKDAsIA0KICAgICAgICAgICAgMCksIGxlZ2VuZC5qdXN0aWZpY2F0aW9uID0gYygwLCAwKSkNCiAgICB9DQogICAgZWxzZSBpZiAobGVnZW5kLnBvcyA9PSAidG9wLnJpZ2h0Iikgew0KICAgICAgICBwbG90IDwtIHBsb3QgKyBnZ3Bsb3QyOjp0aGVtZShsZWdlbmQucG9zaXRpb24gPSBjKDEsIA0KICAgICAgICAgICAgMSksIGxlZ2VuZC5qdXN0aWZpY2F0aW9uID0gYygxLCAxKSkNCiAgICB9DQogICAgZWxzZSBpZiAobGVnZW5kLnBvcyA9PSAidG9wLmxlZnQiKSB7DQogICAgICAgIHBsb3QgPC0gcGxvdCArIGdncGxvdDI6OnRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9IGMoMCwgDQogICAgICAgICAgICAxKSwgbGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDAsIDEpKQ0KICAgIH0NCiAgICBlbHNlIGlmIChsZWdlbmQucG9zID09ICJ0b3Aub3V0Iikgew0KICAgICAgICBwbG90IDwtIHBsb3QgKyBnZ3Bsb3QyOjp0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIikNCiAgICB9DQogICAgZWxzZSBpZiAobGVnZW5kLnBvcyA9PSAiYm90dG9tLm91dCIpIHsNCiAgICAgICAgcGxvdCA8LSBwbG90ICsgZ2dwbG90Mjo6dGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpDQogICAgfQ0KICAgIGlmIChjYiA9PSBUUlVFKSB7DQogICAgICAgIHBsb3QgPC0gcGxvdCArIGdncGxvdDI6OnNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNicGwpICsgDQogICAgICAgICAgICBnZ3Bsb3QyOjpzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGNicGwpDQogICAgfQ0KICAgIGlmIChrID09IFRSVUUgJiYgZyA9PSBGQUxTRSAmJiBrLnBvcyA9PSAicmlnaHQiKSB7DQogICAgICAgIHBsb3QgPC0gcGxvdCArIGdncGxvdDI6OmFubm90YXRlKCJ0ZXh0IiwgeSA9IChtYXgoZGF0YV90cmltJHlpKSArIA0KICAgICAgICAgICAgKG1heChkYXRhX3RyaW0keWkpICogMC4xKSksIHggPSAoc2VxKDEsIGdyb3VwX25vLCANCiAgICAgICAgICAgIDEpICsgMC4zKSwgbGFiZWwgPSBwYXN0ZSgiaXRhbGljKGspPT0iLCBtb2RfdGFibGUkS1sxOmdyb3VwX25vXSksIA0KICAgICAgICAgICAgcGFyc2UgPSBUUlVFLCBoanVzdCA9ICJyaWdodCIsIHNpemUgPSAzLjUpDQogICAgfQ0KICAgIGVsc2UgaWYgKGsgPT0gVFJVRSAmJiBnID09IEZBTFNFICYmIGsucG9zID09ICJsZWZ0Iikgew0KICAgICAgICBwbG90IDwtIHBsb3QgKyBnZ3Bsb3QyOjphbm5vdGF0ZSgidGV4dCIsIHkgPSAobWluKGRhdGFfdHJpbSR5aSkgKyANCiAgICAgICAgICAgIChtaW4oZGF0YV90cmltJHlpKSAqIDAuMSkpLCB4ID0gKHNlcSgxLCBncm91cF9ubywgDQogICAgICAgICAgICAxKSArIDAuMyksIGxhYmVsID0gcGFzdGUoIml0YWxpYyhrKT09IiwgbW9kX3RhYmxlJEtbMTpncm91cF9ub10pLCANCiAgICAgICAgICAgIHBhcnNlID0gVFJVRSwgaGp1c3QgPSAibGVmdCIsIHNpemUgPSAzLjUpDQogICAgfQ0KICAgIGVsc2UgaWYgKGsgPT0gVFJVRSAmJiBnID09IFRSVUUgJiYgay5wb3MgPT0gInJpZ2h0Iikgew0KICAgICAgICBwbG90IDwtIHBsb3QgKyBnZ3Bsb3QyOjphbm5vdGF0ZSgidGV4dCIsIHkgPSAobWF4KGRhdGFfdHJpbSR5aSkgKyANCiAgICAgICAgICAgIChtYXgoZGF0YV90cmltJHlpKSAqIDAuMSkpLCB4ID0gKHNlcSgxLCBncm91cF9ubywgDQogICAgICAgICAgICAxKSArIDAuMyksIGxhYmVsID0gcGFzdGUoIml0YWxpYyhrKT09IiwgbW9kX3RhYmxlJEtbMTpncm91cF9ub10sIA0KICAgICAgICAgICAgIiAoIiwgbW9kX3RhYmxlJGdbMTpncm91cF9ub10sICIpIiksIA0KICAgICAgICAgICAgcGFyc2UgPSBUUlVFLCBoanVzdCA9ICJyaWdodCIsIHNpemUgPSAzLjUpDQogICAgfQ0KICAgIGVsc2UgaWYgKGsgPT0gVFJVRSAmJiBnID09IFRSVUUgJiYgay5wb3MgPT0gImxlZnQiKSB7DQogICAgICAgIHBsb3QgPC0gcGxvdCArIGdncGxvdDI6OmFubm90YXRlKCJ0ZXh0IiwgeSA9IChtaW4oZGF0YV90cmltJHlpKSArIA0KICAgICAgICAgICAgKG1pbihkYXRhX3RyaW0keWkpICogMC4xKSksIHggPSAoc2VxKDEsIGdyb3VwX25vLCANCiAgICAgICAgICAgIDEpICsgMC4zKSwgbGFiZWwgPSBwYXN0ZSgiaXRhbGljKGspPT0iLCBtb2RfdGFibGUkS1sxOmdyb3VwX25vXSwgDQogICAgICAgICAgICAiICgiLCBtb2RfdGFibGUkZ1sxOmdyb3VwX25vXSwgIikiKSwgDQogICAgICAgICAgICBwYXJzZSA9IFRSVUUsIGhqdXN0ID0gImxlZnQiLCBzaXplID0gMy41KQ0KICAgIH0NCiAgICByZXR1cm4ocGxvdCkNCn0NCmBgYA0KDQoNCg0KIyMjIFJ1biBmdWxsIG1vZGVscyBpbiBvcmlnaW5hbCB1bml0cw0KDQpgYGB7cn0NCmZ1bGxfbW9kZWxfb3JnX3VuaXRzIDwtIHJ1bl9tb2RlbChkYXQsIH4gLSAxICsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29va2luZ19DYXRlZ29yeSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRkFTX2NhcmJvbl9jaGFpbiArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX1JhdGlvX2xpcXVpZF9maXNoKQ0KDQojIGZ1bGwgbW9kZWwgd2l0aCBSYXRpb19saXF1aWRfZmlzaCB0YWtlbiBhcyBgMGAgZm9yIHRoZSBkcnkgY29va2luZyBjYXRlZ29yeSANCmZ1bGxfbW9kZWxfb3JnX3VuaXRzMCA8LSBydW5fbW9kZWwoZGF0LCB+IC0gMSArIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvb2tpbmdfQ2F0ZWdvcnkgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBlcmF0dXJlX2luX0NlbHNpdXMgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aF9jb29raW5nX3RpbWVfaW5fcyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEZBU19jYXJib25fY2hhaW4gKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19SYXRpb19saXF1aWRfZmlzaDApDQoNCiMgZnVsbCBtb2RlbCB3aXRob3V0IHRoZSAiTm8gbGlxdWlkIiBkYXRhIGZvciBmaWd1cmUgM0IsIHdoZW4gUmF0aW9fbGlxdWlkX2Zpc2ggaXMgdGFrZW4gYXMgYE5BYCBmb3IgdGhlIGRyeSBjb29raW5nIGNhdGVnb3J5IA0KZnVsbF9tb2RlbF9vcmdfdW5pdHNfb2lsX3dhdGVyIDwtIHJ1bl9tb2RlbChkYXRfb2lsX3dhdGVyLCB+IC0gMSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29va2luZ19DYXRlZ29yeSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRkFTX2NhcmJvbl9jaGFpbiArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX1JhdGlvX2xpcXVpZF9maXNoKQ0KYGBgDQoNCg0KDQojIyMgRmlndXJlIDNBDQoNCkVzdGltYXRlcyBhdCBjb29raW5nIHRpbWVzIG9mIDIsIDEwIGFuZCAyNSBtaW4NCmBgYHtyLCBmaWcuaGVpZ2h0PTUsIGZpZy53aWR0aD03fQ0KdGltZV9tbTAgPC1tb2RfcmVzdWx0cyhmdWxsX21vZGVsX29yZ191bml0czAsIGRhdGEgPSBkYXQsIG1vZCA9ICIxIiwgZ3JvdXA9IlN0dWR5X0lEIixhdCA9IGxpc3QoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zID0gYygxMjAsNjAwLDE1MDApKSwgYnkgPSAiTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zIikNCiANCnBfdGltZV9tbTA8LW15X29yY2hhcmQodGltZV9tbTAsIHhsYWIgPSAibG5SUiIsIGNvbmRpdGlvbi5sYWIgPSAiQ29va2luZyB0aW1lIChzZWMpIiwgYWxwaGE9MC4zLCB0cnVuay5zaXplPTgsIGJyYW5jaC5zaXplID0gMS43NSwgdHdpZy5zaXplID0gMC43NSwgbGVnZW5kLnBvcz0iYm90dG9tLmxlZnQiLCBrPUYpKw0KICAgICAgICAgICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2UgPSBjKDEsIDEwKSwgYnJlYWtzPWMoMiw0LDYpKSsNCiAgICAgICAgICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPSJncmF5NzUiKSsNCiAgICAgICAgICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSAiZ3JheTYwIikrICMgY2hhbmdlIGNvbG91cnMNCiAgICAgICAgICAgdGhlbWUocGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4zKSwgIyBib3JkZXIgYXJvdW5kIHRoZSBwbG90DQogICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzKSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkrDQogICAgICAgICAgIHlsaW0oLTYuMDUsIDMpKw0KICAgICAgICAgICBhbm5vdGF0ZSgidGV4dCIsIHkgPSAxLjksIHggPSAxLjMsIGxhYmVsID0gcGFzdGUoIml0YWxpYyhrKT09IiwgNDMxKSwgcGFyc2UgPSBUUlVFLCBoanVzdCA9ICJyaWdodCIsIHNpemUgPSAzLjUpICsNCiAgICAgICAgICAgYW5ub3RhdGUoInRleHQiLCB5ID0gMi4zLCB4ID0gMS4yOTksIGxhYmVsID0gcGFzdGUoIig3KSIpLCBwYXJzZSA9IFRSVUUsIGhqdXN0ID0gInJpZ2h0Iiwgc2l6ZSA9IDMuNSkgDQpgYGANCg0KIyMjIEZpZ3VyZSAzQg0KDQpFc3RpbWF0ZXMgYXQgMC4xIG1ML2cgb2YgdGlzc3VlLCAxMCBtTC9nIG9mIHRpc3N1ZSBvciA0NSBtTC9nIG9mIHRpc3N1ZQ0KYGBge3IsIGZpZy5oZWlnaHQ9NSwgZmlnLndpZHRoPTd9DQp2b2x1bWVfbW0wIDwtbW9kX3Jlc3VsdHMoZnVsbF9tb2RlbF9vcmdfdW5pdHMwLCBkYXRhID0gZGF0LCBtb2QgPSAiMSIsIGdyb3VwPSJTdHVkeV9JRCIsYXQgPSBsaXN0KGxvZ19SYXRpb19saXF1aWRfZmlzaDA9IGMoMCwgMi40LCAzLjgpKSwgYnkgPSAibG9nX1JhdGlvX2xpcXVpZF9maXNoMCIpDQogDQpwX3ZvbHVtZV9tbTA8LW15X29yY2hhcmQodm9sdW1lX21tMCwgeGxhYiA9ICJsblJSIiwgY29uZGl0aW9uLmxhYiA9ICJsbiAoTGlxdWlkL2FuaW1hbCB0aXNzdWUgcmF0aW8gKyAxKSAobUwvZykiLCBhbHBoYT0wLjMsIHRydW5rLnNpemU9OCwgYnJhbmNoLnNpemUgPSAxLjc1LCB0d2lnLnNpemUgPSAwLjc1LCBsZWdlbmQucG9zPSJib3R0b20ubGVmdCIsIGs9RikrDQogICAgICAgICAgIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZSA9IGMoMSwgMTApKSsNCiAgICAgICAgICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPSJncmF5NzUiKSsNCiAgICAgICAgICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSAiZ3JheTYwIikrICMgY2hhbmdlIGNvbG91cnMNCiAgICAgICAgICAgdGhlbWUocGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4zKSwgIyBib3JkZXIgYXJvdW5kIHRoZSBwbG90DQogICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzKSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkrDQogICAgICAgICAgZ3VpZGVzKHNpemU9RikrDQogICAgICAgICAgIHlsaW0oLTYuMDUsIDMpKw0KICAgICAgICAgICBhbm5vdGF0ZSgidGV4dCIsIHkgPSAxLjksIHggPSAxLjMsIGxhYmVsID0gcGFzdGUoIml0YWxpYyhrKT09IiwgNDMxKSwgcGFyc2UgPSBUUlVFLCBoanVzdCA9ICJyaWdodCIsIHNpemUgPSAzLjUpICsNCiAgICAgICAgICAgYW5ub3RhdGUoInRleHQiLCB5ID0gMi4zLCB4ID0gMS4yOTcsIGxhYmVsID0gcGFzdGUoIig3KSIpLCBwYXJzZSA9IFRSVUUsIGhqdXN0ID0gInJpZ2h0Iiwgc2l6ZSA9IDMuNSkgDQpgYGANCg0KDQoNCiMjIyBGaWd1cmUgM0MgDQoNCkVzdGltYXRlcyBhdCBjb29raW5nIHRpbWVzIG9mIDIsIDEwIGFuZCAyNSBtaW4NCg0KSW4gdGhpcyBjYXNlLCB3YXRlci0gYW5kIG9pbC1iYXNlZCBjb29raW5nIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gZHJ5IGNvb2tpbmcgdG8gYXZvaWQgZXh0cmFwb2xhdGlvbnMgb2YgdGhlIGRyeSBjb29raW5nIGVmZmVjdCBzaXplcyBhdCB0aGUgbWVhbiBsaXF1aWQgcmF0aW8uIA0KDQpgYGB7ciwgZmlnLmhlaWdodD0xMCwgZmlnLndpZHRoPTh9DQoNCnRpbWVfbW1fY2F0IDwtIG1vZF9yZXN1bHRzKGZ1bGxfbW9kZWxfb3JnX3VuaXRzLCBkYXRhID0gZGF0LCBtb2QgPSAiQ29va2luZ19DYXRlZ29yeSIsIGdyb3VwPSJTdHVkeV9JRCIsIGF0ID0gbGlzdChMZW5ndGhfY29va2luZ190aW1lX2luX3MgPSBjKDEyMCw2MDAsMTUwMCkpLCBieSA9ICJMZW5ndGhfY29va2luZ190aW1lX2luX3MiKQ0KIA0KcF90aW1lX21tX3dhdF9vaWw8LW15X29yY2hhcmQodGltZV9tbV9jYXQgLHhsYWIgPSAibG5SUiIsIGdyb3VwPSJTdHVkeV9JRCIsIGNvbmRpdGlvbi5sYWIgID0gIkNvb2tpbmcgdGltZSAoc2VjKSIsIGFscGhhPTAuMywgdHJ1bmsuc2l6ZT04LCBicmFuY2guc2l6ZSA9IDEuNzUsIHR3aWcuc2l6ZSA9IDAuNzUsIGxlZ2VuZC5wb3M9ImJvdHRvbS5sZWZ0Iiwgaz1GKSsNCiAgICAgICAgICAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCAxMCkpKw0KICAgICAgICAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZ29sZGVucm9kMiIsICJkb2RnZXJibHVlMyIpKSsNCiAgICAgICAgICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJnb2xkZW5yb2QyIiwgImRvZGdlcmJsdWUzIikpKyAjIGNoYW5nZSBjb2xvdXJzDQogICAgICAgICAgIHRoZW1lKHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMyksICMgYm9yZGVyIGFyb3VuZCB0aGUgcGxvdA0KICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAwKSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSsgDQogICAgICAgICAgIGd1aWRlcyhzaGFwZT1GLCBzaXplPUYpKw0KICAgICAgICAgICB5bGltKC02LjEsIDMpKw0KICAgICAgICAgICBhbm5vdGF0ZSgidGV4dCIsIHkgPSAxLjksIHggPSAoc2VxKDEsIDIsIDEpICsgMC4zMDEpLCBsYWJlbCA9IHBhc3RlKCJpdGFsaWMoayk9PSIsIGMoMjYzLCAxMjEpKSwgcGFyc2UgPSBUUlVFLCBoanVzdCA9ICJyaWdodCIsIHNpemUgPSAzLjUpKw0KICAgICAgICAgICBhbm5vdGF0ZSgidGV4dCIsIHkgPSAyLjMsIHggPSAoc2VxKDEsIDIsIDEpICsgMC4zKSwgbGFiZWwgPSBwYXN0ZShjKCIoNikiLCAiKDYpIikpLCBwYXJzZSA9IFRSVUUsIGhqdXN0ID0gInJpZ2h0Iiwgc2l6ZSA9IDMuNSkNCg0KdGltZV9tbV9kcnk8LW1vZF9yZXN1bHRzKGZ1bGxfbW9kZWxfb3JnX3VuaXRzX2RyeSwgZGF0YSA9IGRhdF9kcnksIGdyb3VwPSJTdHVkeV9JRCIsYXQgPSBsaXN0KExlbmd0aF9jb29raW5nX3RpbWVfaW5fcyA9IGMoMTIwLDYwMCwxNTAwKSksIGJ5ID0gIkxlbmd0aF9jb29raW5nX3RpbWVfaW5fcyIpDQpwX3RpbWVfbW1fZHJ5PC1teV9vcmNoYXJkKHRpbWVfbW1fZHJ5LCB4bGFiID0gImxuUlIiLCBncm91cD0iU3R1ZHlfSUQiLCBjb25kaXRpb24ubGFiICA9ICJDb29raW5nIHRpbWUgKHNlYykiLCBhbHBoYT0wLjMsIHRydW5rLnNpemU9OCwgYnJhbmNoLnNpemUgPSAxLjc1LCB0d2lnLnNpemUgPSAwLjc1LCBsZWdlbmQucG9zPSJib3R0b20ubGVmdCIsIGs9RikrDQogICAgICAgICAgIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZSA9IGMoMSwgMTApKSsNCiAgICAgICAgICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIiM1NUM2NjdGRiIpKSsNCiAgICAgICAgICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCIjNTVDNjY3RkYiKSkrICMgY2hhbmdlIGNvbG91cnMNCiAgICAgICAgICAgdGhlbWUocGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4zKSwgIyBib3JkZXIgYXJvdW5kIHRoZSBwbG90DQogICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwgIyBjaGFuZ2UgZm9udCBzaXplcw0KICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkrIA0KICAgICAgICAgICBndWlkZXMoc2l6ZT1GKSsNCiAgICAgICAgICAgeWxpbSgtNi4wNSwgMykrDQogICAgICAgICAgIGFubm90YXRlKCJ0ZXh0IiwgeSA9IDEuOSwgeCA9IDEuMywgbGFiZWwgPSBwYXN0ZSgiaXRhbGljKGspPT0iLCA0NyksIHBhcnNlID0gVFJVRSwgaGp1c3QgPSAicmlnaHQiLCBzaXplID0gMy41KSsNCiAgICAgICAgICAgYW5ub3RhdGUoInRleHQiLCB5ID0gMi4zLCB4ID0gMS4yOTksIGxhYmVsID0gcGFzdGUoIigxKSIpLCBwYXJzZSA9IFRSVUUsIGhqdXN0ID0gInJpZ2h0Iiwgc2l6ZSA9IDMuNSkNCg0KDQpwX3RpbWVfbW1fY2F0PC1wX3RpbWVfbW1fd2F0X29pbC9wX3RpbWVfbW1fZHJ5ICsgcGxvdF9sYXlvdXQoaGVpZ2h0cz1jKDIsMSkpDQpgYGANCg0KIyMjIENvbWJpbmUgcGxvdHMgYW5kIHNhdmUNCg0KYGBge3IsIGZpZy5oZWlnaHQ9MTEsIGZpZy53aWR0aD0xNH0NCigocF90aW1lX21tMC9wX3ZvbHVtZV9tbTApfHBfdGltZV9tbV9jYXQpICsgcGxvdF9hbm5vdGF0aW9uKHRhZ19sZXZlbHM9YygiQSIsICJCIiwgIkMiKSkNCmBgYA0KDQpgYGB7ciwgZXZhbD1GfQ0KZ2dzYXZlKCJmaWcvRmlnXzMucG5nIiwgd2lkdGg9MTQsIGhlaWdodD0xMSwgZHBpPTEyMDApDQpgYGANCg0KDQoNCiMjIEZpZ3VyZSA0DQoNCiMjIyBGaWd1cmUgNEEgDQoNCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMH0NCiMjIyMjIE9pbCBiYXNlZA0KZnVsbF9tb2RlbF9vaWxfdGltZTA8LSBydW5fbW9kZWwob2lsX2RhdCwgfiBzY2FsZShUZW1wZXJhdHVyZV9pbl9DZWxzaXVzKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoXzAgKyAxKSkpDQoNCnByZWRfb2lsX3RpbWUwPC1wcmVkaWN0LnJtYShmdWxsX21vZGVsX29pbF90aW1lMCwgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKDAsb2lsX2RhdCRMZW5ndGhfY29va2luZ190aW1lX2luX3MsIDAsIDApKSAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIGNvb2tpbmcgdGltZQ0KcHJlZF9vaWxfdGltZTA8LWFzLmRhdGEuZnJhbWUocHJlZF9vaWxfdGltZTApDQpwcmVkX29pbF90aW1lMCRMZW5ndGhfY29va2luZ190aW1lX2luX3M9cHJlZF9vaWxfdGltZTAkWC5MZW5ndGhfY29va2luZ190aW1lX2luX3MNCnByZWRfb2lsX3RpbWUwPC1sZWZ0X2pvaW4ob2lsX2RhdCwgcHJlZF9vaWxfdGltZTAsIGJ5PSJMZW5ndGhfY29va2luZ190aW1lX2luX3MiKQ0KDQoNCiMjIyMjIFdhdGVyIGJhc2VkDQpmdWxsX21vZGVsX3dhdGVyX3RpbWUwPC0gcnVuX21vZGVsKHdhdGVyX2RhdCwgfiBzY2FsZShUZW1wZXJhdHVyZV9pbl9DZWxzaXVzKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoXzAgKyAxKSkpDQoNCnByZWRfd2F0ZXJfdGltZTA8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfd2F0ZXJfdGltZTAsIGFkZHg9VFJVRSwgbmV3bW9kcz1jYmluZCh3YXRlcl9kYXQkTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zLCAwLCAwKSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfd2F0ZXJfdGltZTA8LWFzLmRhdGEuZnJhbWUocHJlZF93YXRlcl90aW1lMCkNCnByZWRfd2F0ZXJfdGltZTAkTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zPXByZWRfd2F0ZXJfdGltZTAkWC5MZW5ndGhfY29va2luZ190aW1lX2luX3MNCnByZWRfd2F0ZXJfdGltZTA8LWxlZnRfam9pbih3YXRlcl9kYXQsIHByZWRfd2F0ZXJfdGltZTAsIGJ5PSJMZW5ndGhfY29va2luZ190aW1lX2luX3MiKQ0KDQojIyMjIyBObyBsaXF1aWQgDQoNCmZ1bGxfbW9kZWxfZHJ5X3RpbWU8LSBydW5fbW9kZWwoZHJ5X2RhdCwgfiBMZW5ndGhfY29va2luZ190aW1lX2luX3MpDQoNCnByZWRfZHJ5X3RpbWU8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfZHJ5X3RpbWUsIGFkZHg9VFJVRSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfZHJ5X3RpbWU8LWFzLmRhdGEuZnJhbWUocHJlZF9kcnlfdGltZSkNCnByZWRfZHJ5X3RpbWUkTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zPXByZWRfZHJ5X3RpbWUkWC5MZW5ndGhfY29va2luZ190aW1lX2luX3MNCnByZWRfZHJ5X3RpbWU8LWxlZnRfam9pbihkcnlfZGF0LCBwcmVkX2RyeV90aW1lLCBieT0iTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zIikNCg0KDQoNCg0KcF80QTA8LWdncGxvdChkYXQsYWVzKHggPSBMZW5ndGhfY29va2luZ190aW1lX2luX3MsIHkgPSBsblJSLCBmaWxsPUNvb2tpbmdfQ2F0ZWdvcnkpKSArDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF93YXRlcl90aW1lMCwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfd2F0ZXJfdGltZTAsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sPSJkb2RnZXJibHVlIikrICANCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX29pbF90aW1lMCwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfb2lsX3RpbWUwLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZ29sZGVucm9kIikrICANCiAgDQogICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF9kcnlfdGltZSwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfZHJ5X3RpbWUsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sPSJwYWxlZ3JlZW4zIikrICANCiAgDQogIA0KICAgICAgIGdlb21fcG9pbnQoYWVzKHNpemU9KDEvc3FydCh2YXJfbG5SUikpLCBmaWxsPUNvb2tpbmdfQ2F0ZWdvcnkpLCBzaGFwZT0yMSwgYWxwaGE9MC44KSArDQogICAgICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIiM1NUM2NjdGRiIsICJnb2xkZW5yb2QyIiwgImRvZGdlcmJsdWUzIikpKw0KICAgICAgIGxhYnMoeCA9ICJDb29raW5nIHRpbWUgKHMpIiwgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIA0KICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2U9YygxLDEwKSkrDQogIHRoZW1lX2J3KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgICMgaG9yaXpvbnRhbCBsaW5lIGF0IGxuUlIgPSAwDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4LCBjb2xvdXIgPSAiYmxhY2siLCBoanVzdCA9IDAuNSksICMgY2hhbmdlIGZvbnQgc2l6ZXMgYW5kIGxlZ2VuZCBwb3NpdGlvbg0KICAgICAgICAgIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTE0KSwNCiAgICAgICAgICBsZWdlbmQucG9zaXRpb249YygxLDApLCANCiAgICAgICAgICBsZWdlbmQuanVzdGlmaWNhdGlvbiA9IGMoMSwwKSwNCiAgICAgICAgICBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwgDQogICAgICAgICAgbGVnZW5kLmRpcmVjdGlvbj0iaG9yaXpvbnRhbCIsDQogICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9MTUpLCANCiAgICAgICAgICBwYW5lbC5ib3JkZXI9ZWxlbWVudF9yZWN0KGNvbG91cj0iYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMikpKw0KICBndWlkZXMoZmlsbD1GKQ0KYGBgDQoNCiMjIyBGaWd1cmUgNEIgDQoNCg0KYGBge3IsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEwfQ0KIyMjIyMgT2lsIGJhc2VkDQpmdWxsX21vZGVsX29pbF92b2wwPC0gcnVuX21vZGVsKG9pbF9kYXQsIH4gc2NhbGUoVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cykgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUEZBU19jYXJib25fY2hhaW4pICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfUmF0aW9fbGlxdWlkX2Zpc2gwKQ0KcHJlZF9vaWxfdm9sMDwtcHJlZGljdC5ybWEoZnVsbF9tb2RlbF9vaWxfdm9sMCwgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKDAsMCwwLCBvaWxfZGF0JGxvZ19SYXRpb19saXF1aWRfZmlzaDApKSAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIGNvb2tpbmcgdGltZQ0KDQpwcmVkX29pbF92b2wwPC1hcy5kYXRhLmZyYW1lKHByZWRfb2lsX3ZvbDApDQpwcmVkX29pbF92b2wwPC1wcmVkX29pbF92b2wwICU+JSBtdXRhdGUoUmF0aW9fbGlxdWlkX2Zpc2hfMD1leHAoWC5sb2dfUmF0aW9fbGlxdWlkX2Zpc2gwKS0xLCBDb29raW5nX0NhdGVnb3J5PSJvaWwtYmFzZWQiLCBsblJSPTApICMgZm9yIHRoZSBwbG90IHRvIHdvcmssIHdlIG5lZWQgdG8gYWRkIGEgY29sdW1uIHdpdGggY29va2luZyBjYXRlZ29yeSBhbmQgYSBjb2x1bW4gd2l0aCBsblJSDQoNCg0KIyMjIyMgV2F0ZXIgYmFzZWQgDQoNCmZ1bGxfbW9kZWxfd2F0ZXJfdm9sMDwtIHJ1bl9tb2RlbCh3YXRlcl9kYXQsIH4gc2NhbGUoVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cykgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUEZBU19jYXJib25fY2hhaW4pICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfUmF0aW9fbGlxdWlkX2Zpc2gwKQ0KDQpwcmVkX3dhdGVyX3ZvbDA8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfd2F0ZXJfdm9sMCwgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKDAsMCwgd2F0ZXJfZGF0JGxvZ19SYXRpb19saXF1aWRfZmlzaDApKSAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIGNvb2tpbmcgdGltZQ0KDQpwcmVkX3dhdGVyX3ZvbDA8LWFzLmRhdGEuZnJhbWUocHJlZF93YXRlcl92b2wwKQ0KcHJlZF93YXRlcl92b2wwPC1wcmVkX3dhdGVyX3ZvbDAgJT4lIG11dGF0ZShSYXRpb19saXF1aWRfZmlzaF8wPWV4cChYLmxvZ19SYXRpb19saXF1aWRfZmlzaDApLTEsIENvb2tpbmdfQ2F0ZWdvcnk9IndhdGVyLWJhc2VkIiwgbG5SUj0wKQ0KDQoNCg0KcF80QjA8LSBnZ3Bsb3QoZGF0LGFlcyh4ID0gbG9nKFJhdGlvX2xpcXVpZF9maXNoXzAgKzEpLCB5ID0gbG5SUiwgZmlsbD1Db29raW5nX0NhdGVnb3J5KSkgKw0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfd2F0ZXJfdm9sMCwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfd2F0ZXJfdm9sMCxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2w9ImRvZGdlcmJsdWUiKSsgIA0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfb2lsX3ZvbDAsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiwgY29sb3IgPSBOVUxMKSwgYWxwaGEgPSAwLjMpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX29pbF92b2wwLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZ29sZGVucm9kIikrICANCiAgDQogIA0KICAgICAgIGdlb21fcG9pbnQoYWVzKHNpemU9KDEvc3FydCh2YXJfbG5SUikpLCBmaWxsPUNvb2tpbmdfQ2F0ZWdvcnkpLCBzaGFwZT0yMSwgYWxwaGE9MC44KSArDQogICAgICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIiM1NUM2NjdGRiIsImdvbGRlbnJvZDIiLCAiZG9kZ2VyYmx1ZTMiKSkrDQogICAgICAgbGFicyh4ID0gImxuKExpcXVpZC9hbmltYWwgdGlzc3VlIHJhdGlvICsgMSkgKG1ML2cpIiwgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIA0KICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2U9YygxLDEwKSkrDQogIHRoZW1lX2J3KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgIA0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUpLCANCiAgICAgICAgICBsZWdlbmQudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xNCksDQogICAgICAgICAgbGVnZW5kLnBvc2l0aW9uPSJub25lIiwNCiAgICAgICAgICBwYW5lbC5ib3JkZXI9ZWxlbWVudF9yZWN0KGNvbG91cj0iYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMikpIA0KYGBgDQoNCg0KIyMjIEZpZ3VyZSA0QyANCg0KYGBge3IsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEwfQ0KDQpmdWxsX21vZGVsX29pbF90ZW1wMDwtIHJ1bl9tb2RlbChvaWxfZGF0LCB+IFRlbXBlcmF0dXJlX2luX0NlbHNpdXMgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUEZBU19jYXJib25fY2hhaW4pICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpKSkNCg0KcHJlZF9vaWxfdGVtcDA8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfb2lsX3RlbXAwLCBhZGR4PVRSVUUsIG5ld21vZHM9Y2JpbmQob2lsX2RhdCRUZW1wZXJhdHVyZV9pbl9DZWxzaXVzLDAsIDAsMCkpIA0KcHJlZF9vaWxfdGVtcDA8LWFzLmRhdGEuZnJhbWUocHJlZF9vaWxfdGVtcDApDQpwcmVkX29pbF90ZW1wMCRUZW1wZXJhdHVyZV9pbl9DZWxzaXVzPXByZWRfb2lsX3RlbXAwJFguVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cw0KcHJlZF9vaWxfdGVtcDA8LWxlZnRfam9pbihvaWxfZGF0LCBwcmVkX29pbF90ZW1wMCwgYnk9IlRlbXBlcmF0dXJlX2luX0NlbHNpdXMiKQ0KDQoNCg0KcF80QzA8LWdncGxvdChkYXQsYWVzKHggPSBUZW1wZXJhdHVyZV9pbl9DZWxzaXVzLCB5ID0gbG5SUiwgZmlsbD1Db29raW5nX0NhdGVnb3J5KSkgKw0KICAgIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF9vaWxfdGVtcDAsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiwgY29sb3IgPSBOVUxMKSwgYWxwaGEgPSAwLjMpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX29pbF90ZW1wMCxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2w9ImdvbGRlbnJvZCIpKyAgDQogIA0KICAgICAgIGdlb21fcG9pbnQoYWVzKHNpemU9KDEvc3FydCh2YXJfbG5SUikpLCBmaWxsPUNvb2tpbmdfQ2F0ZWdvcnkpLCBzaGFwZT0yMSwgYWxwaGE9MC44KSArDQogICAgICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIiM1NUM2NjdGRiIsICJnb2xkZW5yb2QyIiwgImRvZGdlcmJsdWUzIiksIA0KICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscz1jKCJubyBsaXF1aWQiLCAib2lsLWJhc2VkIiwgIndhdGVyLWJhc2VkIikpKw0KICAgICAgIGxhYnMoeCA9ICJDb29raW5nIHRlbXBlcmF0dXJlICjCsEMpIiwgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIA0KICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2U9YygxLDEwKSkrDQogIHRoZW1lX2J3KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgICMgaG9yaXpvbnRhbCBsaW5lIGF0IGxuUlIgPSAwDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4LCBjb2xvdXIgPSAiYmxhY2siLCBoanVzdCA9IDAuNSksICMgY2hhbmdlIGZvbnQgc2l6ZXMgYW5kIGxlZ2VuZCBwb3NpdGlvbg0KICAgICAgICAgIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTE0KSwNCiAgICAgICAgICBsZWdlbmQucG9zaXRpb249YygxLDApLCANCiAgICAgICAgICBsZWdlbmQuanVzdGlmaWNhdGlvbiA9IGMoMSwwKSwNCiAgICAgICAgICBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwgDQogICAgICAgICAgbGVnZW5kLmRpcmVjdGlvbj0idmVydGljYWwiLA0KICAgICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplPTE1KSwgDQogICAgICAgICAgcGFuZWwuYm9yZGVyPWVsZW1lbnRfcmVjdChjb2xvdXI9ImJsYWNrIiwgZmlsbD1OQSwgc2l6ZT0xLjIpKSsNCiAgZ3VpZGVzKHNpemU9RikNCmBgYA0KDQoNCiMjIyBGaWd1cmUgNEQgDQoNCg0KYGBge3IsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEwfQ0KIyMjIyMgT2lsIGJhc2VkDQpmdWxsX21vZGVsX29pbF9QRkFTMDwtIHJ1bl9tb2RlbChvaWxfZGF0LCB+IHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGQVNfY2FyYm9uX2NoYWluICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpKSkNCg0KcHJlZF9vaWxfUEZBUzA8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfb2lsX1BGQVMwLCBhZGR4PVRSVUUsIG5ld21vZHM9Y2JpbmQoMCwwLCBvaWxfZGF0JFBGQVNfY2FyYm9uX2NoYWluLDApKSAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIFBGQVMgY2FyYm9uIGNoYWluDQpwcmVkX29pbF9QRkFTMDwtYXMuZGF0YS5mcmFtZShwcmVkX29pbF9QRkFTMCkNCnByZWRfb2lsX1BGQVMwJFBGQVNfY2FyYm9uX2NoYWluPXByZWRfb2lsX1BGQVMwJFguUEZBU19jYXJib25fY2hhaW4NCnByZWRfb2lsX1BGQVMwPC1sZWZ0X2pvaW4ob2lsX2RhdCwgcHJlZF9vaWxfUEZBUzAsIGJ5PSJQRkFTX2NhcmJvbl9jaGFpbiIpDQoNCg0KIyMjIyMgV2F0ZXIgYmFzZWQNCmZ1bGxfbW9kZWxfd2F0ZXJfUEZBUzA8LSBydW5fbW9kZWwod2F0ZXJfZGF0LCB+IHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGQVNfY2FyYm9uX2NoYWluICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpKSkNCg0KcHJlZF93YXRlcl9QRkFTMDwtcHJlZGljdC5ybWEoZnVsbF9tb2RlbF93YXRlcl9QRkFTMCwgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKDAsIHdhdGVyX2RhdCRQRkFTX2NhcmJvbl9jaGFpbiwwKSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfd2F0ZXJfUEZBUzA8LWFzLmRhdGEuZnJhbWUocHJlZF93YXRlcl9QRkFTMCkNCnByZWRfd2F0ZXJfUEZBUzAkUEZBU19jYXJib25fY2hhaW49cHJlZF93YXRlcl9QRkFTMCRYLlBGQVNfY2FyYm9uX2NoYWluDQpwcmVkX3dhdGVyX1BGQVMwPC1sZWZ0X2pvaW4od2F0ZXJfZGF0LCBwcmVkX3dhdGVyX1BGQVMwLCBieT0iUEZBU19jYXJib25fY2hhaW4iKQ0KDQojIyMjIyBObyBsaXF1aWQgDQoNCmZ1bGxfbW9kZWxfZHJ5X1BGQVM8LSBydW5fbW9kZWwoZHJ5X2RhdCwgfiBQRkFTX2NhcmJvbl9jaGFpbikNCg0KcHJlZF9kcnlfUEZBUzwtcHJlZGljdC5ybWEoZnVsbF9tb2RlbF9kcnlfUEZBUywgYWRkeD1UUlVFKQ0KcHJlZF9kcnlfUEZBUzwtYXMuZGF0YS5mcmFtZShwcmVkX2RyeV9QRkFTKQ0KcHJlZF9kcnlfUEZBUyRQRkFTX2NhcmJvbl9jaGFpbj1wcmVkX2RyeV9QRkFTJFguUEZBU19jYXJib25fY2hhaW4NCnByZWRfZHJ5X1BGQVM8LWxlZnRfam9pbihkcnlfZGF0LCBwcmVkX2RyeV9QRkFTLCBieT0iUEZBU19jYXJib25fY2hhaW4iKQ0KDQoNCg0KDQpwXzREMDwtZ2dwbG90KGRhdCxhZXMoeCA9IFBGQVNfY2FyYm9uX2NoYWluLCB5ID0gbG5SUiwgZmlsbD1Db29raW5nX0NhdGVnb3J5KSkgKw0KICANCiAgICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfZHJ5X1BGQVMsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiwgY29sb3IgPSBOVUxMKSwgYWxwaGEgPSAwLjIpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX2RyeV9QRkFTLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0icGFsZWdyZWVuMyIpKyAgDQogIA0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfd2F0ZXJfUEZBUzAsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiwgY29sb3IgPSBOVUxMKSwgYWxwaGEgPSAwLjIpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX3dhdGVyX1BGQVMwLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZG9kZ2VyYmx1ZSIpKyAgDQogIA0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfb2lsX1BGQVMwLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIsIGNvbG9yID0gTlVMTCksIGFscGhhID0gMC4zKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9vaWxfUEZBUzAsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sPSJnb2xkZW5yb2QiKSsgIA0KICANCiAgDQogICAgICAgZ2VvbV9wb2ludChhZXMoc2l6ZT0oMS9zcXJ0KHZhcl9sblJSKSksIGZpbGw9Q29va2luZ19DYXRlZ29yeSksIHNoYXBlPTIxLCBhbHBoYT0wLjgpICsNCiAgICAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiIzU1QzY2N0ZGIiwgImdvbGRlbnJvZDIiLCAiZG9kZ2VyYmx1ZTMiKSkrDQogICAgICAgbGFicyh4ID0gIlBGQVMgY2FyYm9uIGNoYWluIGxlbmd0aCIsIHkgPSAibG5SUiIsIHNpemUgPSAiUHJlY2lzb24gKDEvU0UpIikgKyANCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlPWMoMSwxMCkpKw0KICB0aGVtZV9idygpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCxsaW5ldHlwZSA9IDIsIGNvbG91ciA9ICJibGFjayIsYWxwaGE9MC41KSsgICAjIGhvcml6b250YWwgbGluZSBhdCBsblJSID0gMA0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUpLCAjIGNoYW5nZSBmb250IHNpemVzIGFuZCBsZWdlbmQgcG9zaXRpb24NCiAgICAgICAgICBsZWdlbmQudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xNCksDQogICAgICAgICAgbGVnZW5kLnBvc2l0aW9uPSJub25lIiwNCiAgICAgICAgICBwYW5lbC5ib3JkZXI9ZWxlbWVudF9yZWN0KGNvbG91cj0iYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMikpDQpgYGANCg0KDQojIyMgQ29tYmluZSBhbmQgc2F2ZQ0KYGBge3IsIGZpZy53aWR0aD0xNSwgZmlnLmhlaWdodD0xMn0NCg0KKHBfNEEwK3BfNEIwKS8ocF80QzArcF80RDApKyBwbG90X2Fubm90YXRpb24odGFnX2xldmVscz1jKCJBIiwgIkIiLCAiQyIsICJEIikpDQoNCmBgYA0KDQpgYGB7ciwgZXZhbD1GfQ0KZ2dzYXZlKCJmaWcvRmlnXzQucG5nIiwgd2lkdGg9MTUsIGhlaWdodD0xMiwgZHBpPTEyMDApDQpgYGANCg0KDQoNCg0KIyMgRmlndXJlIDUNCg0KIyMjIEZpZ3VyZSA1QSANCg0KYGBge3IsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTEwfQ0KZGF0JFN0dWR5X0lEPC0gYXMuZmFjdG9yKGRhdCRTdHVkeV9JRCkNCg0KIyBmdW5uZWwoZnVsbF9tb2RlbCwgDQojICAgICAgIHlheGlzPSJzZWludiIsICMgSW52ZXJzZSBvZiBzdGFuZGFyZCBlcnJvciAocHJlY2lzaW9uKSBhcyB0aGUgeSBheGlzDQojICAgICAgIGxldmVsID0gYyg5MCwgOTUsIDk5KSwgICMgbGV2ZWxzIG9mIHN0YXRpc3RpY2FsIHNpZ25pZmljYW5jZSBoaWdobGlnaHRlZCANCiMgICAgICAgc2hhZGUgPSBjKCJ3aGl0ZSIsICJncmF5NzUiLCAiZ3JheTU1IiwgImdyYXk0MCIpLCAjIHNoYWRlcyBmb3IgZGlmZmVyZW50IGxldmVscyBvZiBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2UNCiMgICAgICAgbGVnZW5kID0gVFJVRSwgIyBkaXNwbGF5IGxlZ2VuZA0KIyAgICAgICB5bGFiPSJQcmVjaXNpb24gKDEvU0UpIiwgDQojICAgICAgIGNleC5sYWI9MS43NSwgDQojICAgICAgIGRpZ2l0cz0xLCANCiMgICAgICAgY2V4PTIsDQojICAgICAgIHBjaD0yMSwNCiMgICAgICAgY29sPWRhdCRTdHVkeV9JRCkNCg0KDQpwZGYoTlVMTCkNCmRldi5jb250cm9sKGRpc3BsYXlsaXN0PSJlbmFibGUiKQ0KcGFyKG1hcj1jKDQsNiwwLjEsMCkpDQoNCnBsb3RfZjAgPC0gZnVubmVsKGZ1bGxfbW9kZWwwLCANCiAgICAgIHlheGlzPSJzZWludiIsICMgSW52ZXJzZSBvZiBzdGFuZGFyZCBlcnJvciAocHJlY2lzaW9uKSBhcyB0aGUgeSBheGlzDQogICAgICBsZXZlbCA9IGMoOTAsIDk1LCA5OSksICAjIGxldmVscyBvZiBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2UgaGlnaGxpZ2h0ZWQgDQogICAgICBzaGFkZSA9IGMoIndoaXRlIiwgImdyYXk3NSIsICJncmF5NTUiLCAiZ3JheTQwIiksICMgc2hhZGVzIGZvciBkaWZmZXJlbnQgbGV2ZWxzIG9mIHN0YXRpc3RpY2FsIHNpZ25pZmljYW5jZQ0KICAgICAgbGVnZW5kID0gVFJVRSwgIyBkaXNwbGF5IGxlZ2VuZA0KICAgICAgeWxhYj0iUHJlY2lzaW9uICgxL1NFKSIsIA0KICAgICAgY2V4LmxhYj0xLjc1LCANCiAgICAgIGRpZ2l0cz0yLCANCiAgICAgIHlsaW09YygwLjg1LDEuMDUpLA0KICAgICAgeGxpbT1jKC02LCA2KSwNCiAgICAgIGNleD0yLA0KICAgICAgcGNoPTIxLA0KICAgICAgY29sPWRhdCRTdHVkeV9JRCkNCnBfNUEwIDwtIHJlY29yZFBsb3QocGxvdF9mMCkNCmludmlzaWJsZShkZXYub2ZmKCkpDQoNCmBgYA0KDQojIyMgRmlndXJlIDVCIA0KDQpgYGB7ciwgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9N30NCmZ1bGxfbW9kZWxfZWdnZXIwIDwtIHJ1bl9tb2RlbChkYXQsIH4gLSAxICsNCiAgICAgICAgICAgICAgICAgICAgICBJKHNxcnQoMS9OX3RpbGRlKSkgKyAgDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUHVibGljYXRpb25feWVhcikgKyANCiAgICAgICAgICAgICAgICAgICAgICBzY2FsZShUZW1wZXJhdHVyZV9pbl9DZWxzaXVzKSArDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKSArDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUEZBU19jYXJib25fY2hhaW4pICsNCiAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2hfMCArIDEpKSkgIyBNb2RlbCB0byBnZXQgcHJlZGljdGlvbnMNCg0KDQpwcmVkX2VnZ2VyMDwtcHJlZGljdC5ybWEoZnVsbF9tb2RlbF9lZ2dlcjAsIGFkZHg9VFJVRSwgbmV3bW9kcz1jYmluZChzcXJ0KDEvZGF0JE5fdGlsZGUpLDAsMCwwICwwLCAwKSkgDQpwcmVkX2VnZ2VyMDwtYXMuZGF0YS5mcmFtZShwcmVkX2VnZ2VyMCkNCnByZWRfZWdnZXIwJFNFX2VmZl9OPXByZWRfZWdnZXIwJFguSS5zcXJ0LjEuTl90aWxkZS4uDQpwcmVkX2VnZ2VyMDwtIHByZWRfZWdnZXIwICU+JSBtdXRhdGUoTl90aWxkZSA9ICgoMS9YLkkuc3FydC4xLk5fdGlsZGUuLileMiksIGxuUlIgPSAwKSANCg0KcF81QjA8LWdncGxvdChkYXQsYWVzKHggPSBzcXJ0KDEvTl90aWxkZSksIHkgPSBsblJSKSkgKw0KICANCiAgICAgICBnZW9tX3BvaW50KGFlcyhzaXplPSgxL3NxcnQodmFyX2xuUlIpKSksIHNoYXBlPTIxLCBhbHBoYT0wLjgsIGZpbGw9ImdyYXk3NSIpICsNCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX2VnZ2VyMCwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViKSwgYWxwaGEgPSAwLjI1LCBmaWxsPSJvcmFuZ2VyZWQiKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9lZ2dlcjAsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sb3I9Im9yYW5nZXJlZDIiKSsgIA0KDQogICAgICAgbGFicyh4ID0gIlN0YW5kYXJkIGVycm9yIiwgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIA0KICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2U9YygxLDEwKSkrDQogIHRoZW1lX2J3KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgICMgaG9yaXpvbnRhbCBsaW5lIGF0IGxuUlIgPSAwDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDIwLCBjb2xvdXIgPSAiYmxhY2siLCBoanVzdCA9IDAuNSksICMgY2hhbmdlIGZvbnQgc2l6ZXMgYW5kIGxlZ2VuZCBwb3NpdGlvbg0KICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIsDQogICAgICAgICAgcGFuZWwuYm9yZGVyPWVsZW1lbnRfcmVjdChjb2xvdXI9ImJsYWNrIiwgZmlsbD1OQSwgc2l6ZT0xLjIpKSsNCiAgeGxpbSgwLjE4LDEpDQpgYGANCg0KDQojIyMgRmlndXJlIDVDIA0KDQpgYGB7ciwgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9N30NCmZ1bGxfbW9kZWxfcHViMCA8LSBydW5fbW9kZWwoZGF0LCB+IC0gMSArDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoSShzcXJ0KDEvTl90aWxkZSkpKSArICANCiAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbl95ZWFyICsgDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cykgKw0KICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykgKw0KICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoXzAgKyAxKSkpICMgTW9kZWwgdG8gZ2V0IHByZWRpY3Rpb25zDQoNCg0KcHJlZF9wdWIwPC1wcmVkaWN0LnJtYShmdWxsX21vZGVsX3B1YjAsIGFkZHg9VFJVRSwgbmV3bW9kcz1jYmluZCgwLGRhdCRQdWJsaWNhdGlvbl95ZWFyLDAsMCAsMCwgMCkpIA0KcHJlZF9wdWIwPC1hcy5kYXRhLmZyYW1lKHByZWRfcHViMCkNCnByZWRfcHViMCRQdWJsaWNhdGlvbl95ZWFyPXByZWRfcHViMCRYLlB1YmxpY2F0aW9uX3llYXINCnByZWRfcHViMDwtbGVmdF9qb2luKGRhdCwgcHJlZF9wdWIwLCBieT0iUHVibGljYXRpb25feWVhciIpDQoNCg0KDQpwXzVDMDwtZ2dwbG90KGRhdCxhZXMoeCA9IFB1YmxpY2F0aW9uX3llYXIsIHkgPSBsblJSKSkgKw0KICANCiAgICAgICBnZW9tX3BvaW50KGFlcyhzaXplPSgxL3NxcnQodmFyX2xuUlIpKSksIHNoYXBlPTIxLCBhbHBoYT0wLjgsIGZpbGw9ImdyYXk3NSIpICsNCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX3B1YjAsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiksIGFscGhhID0gMC4yNSwgZmlsbD0ib3JhbmdlcmVkIikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfcHViMCxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2xvcj0ib3JhbmdlcmVkMiIpKyAgDQoNCiAgICAgICBsYWJzKHggPSAiUHVibGljYXRpb24geWVhciIsIHkgPSAibG5SUiIsIHNpemUgPSAiUHJlY2lzb24gKDEvU0UpIikgKyANCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlPWMoMSwxMCkpKw0KICB0aGVtZV9idygpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCxsaW5ldHlwZSA9IDIsIGNvbG91ciA9ICJibGFjayIsYWxwaGE9MC41KSsgICAjIGhvcml6b250YWwgbGluZSBhdCBsblJSID0gMA0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUpLCAjIGNoYW5nZSBmb250IHNpemVzIGFuZCBsZWdlbmQgcG9zaXRpb24NCiAgICAgICAgICBsZWdlbmQudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xNCksDQogICAgICAgICAgbGVnZW5kLnBvc2l0aW9uPWMoMSwwKSwgDQogICAgICAgICAgbGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDEsMCksDQogICAgICAgICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCksIA0KICAgICAgICAgIGxlZ2VuZC5kaXJlY3Rpb249InZlcnRpY2FsIiwNCiAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZT0xNSksIA0KICAgICAgICAgIHBhbmVsLmJvcmRlcj1lbGVtZW50X3JlY3QoY29sb3VyPSJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4yKSkgICsNCiAgIHNjYWxlX3hfY29udGludW91cyhicmVha3M9YygyMDA4LCAyMDEwLCAyMDEyLCAyMDE0LCAyMDE2LCAyMDE4ICwyMDIwKSkNCg0KYGBgDQoNCiMjIyBDb21iaW5lIGFuZCBzYXZlDQoNCmBgYHtyLCBmaWcud2lkdGg9MTgsIGZpZy5oZWlnaHQ9N30NCihnZ2RyYXcocF81QTApICsgZ2dkcmF3KHBfNUIwKSArIGdnZHJhdyhwXzVDMCkgKyBwbG90X2Fubm90YXRpb24odGFnX2xldmVscyA9ICdBJykpDQpgYGANCg0KYGBge3IsIGV2YWw9Rn0NCmdnc2F2ZShoZXJlKCJmaWcvRmlnXzVCQy5wbmciKSwgd2lkdGg9MTgsIGhlaWdodD03LCBkcGk9MTIwMCkNCg0KYGBgDQoNCiMgKipTdXBwbGVtZW50YXJ5IGZpZ3VyZXMqKg0KDQpJbiB0aG9zZSBmaWd1cmVzLCB0aGUgbGlxdWlkL2FuaW1hbCB0aXNzdWUgcmF0aW8gd2FzIHRha2VuIGFzIGBOQWAgZm9yIHRoZSBkcnkgY29va2luZyBjYXRlZ29yeQ0KDQojIyBGaWd1cmUgMiwgd2l0aCBSYXRpb19saXF1aWRfZmlzaCB0YWtlbiBhcyBgTkFgIGZvciB0aGUgZHJ5IGNvb2tpbmcgbWV0aG9kDQoNCiMjIyBGaWd1cmUgMkENCg0KDQpgYGB7ciwgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9N30NCmZ1bGxfbW9kZWxfdGltZTwtIHJ1bl9tb2RlbChkYXQsIH4gICAgIHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aF9jb29raW5nX3RpbWVfaW5fcysNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2gpKSkNCg0KcHJlZF9mdWxsX21vZGVsX3RpbWU8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfdGltZSwgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKDAsZGF0JExlbmd0aF9jb29raW5nX3RpbWVfaW5fcywgMCwgMCkpICMgU2V0IGFsbCBwcmVkaWN0b3JzIHRvIHRoZWlyIG1lYW4gKG1lYW4gPTAgd2hlbiB6LXRyYW5zZm9ybWVkKSBhbmQgc2V0IHRoZSByYW5nZSBvZiB2YWx1ZXMgb2YgY29va2luZyB0aW1lDQpwcmVkX2Z1bGxfbW9kZWxfdGltZTwtYXMuZGF0YS5mcmFtZShwcmVkX2Z1bGxfbW9kZWxfdGltZSkNCnByZWRfZnVsbF9tb2RlbF90aW1lJExlbmd0aF9jb29raW5nX3RpbWVfaW5fcz1wcmVkX2Z1bGxfbW9kZWxfdGltZSRYLkxlbmd0aF9jb29raW5nX3RpbWVfaW5fcw0KcHJlZF9mdWxsX21vZGVsX3RpbWU8LWxlZnRfam9pbihkYXQsIHByZWRfZnVsbF9tb2RlbF90aW1lLCBieT0iTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zIikNCg0KDQoNCnVuaV9tb2RlbF90aW1lPC0gcnVuX21vZGVsKGRhdCwgfiBMZW5ndGhfY29va2luZ190aW1lX2luX3MpDQoNCnByZWRfdW5pX21vZGVsX3RpbWU8LXByZWRpY3Qucm1hKHVuaV9tb2RlbF90aW1lLCBhZGR4PVRSVUUpICMgU2V0IGFsbCBwcmVkaWN0b3JzIHRvIHRoZWlyIG1lYW4gKG1lYW4gPTAgd2hlbiB6LXRyYW5zZm9ybWVkKSBhbmQgc2V0IHRoZSByYW5nZSBvZiB2YWx1ZXMgb2YgY29va2luZyB0aW1lDQpwcmVkX3VuaV9tb2RlbF90aW1lPC1hcy5kYXRhLmZyYW1lKHByZWRfdW5pX21vZGVsX3RpbWUpDQpwcmVkX3VuaV9tb2RlbF90aW1lJExlbmd0aF9jb29raW5nX3RpbWVfaW5fcz1wcmVkX3VuaV9tb2RlbF90aW1lJFguTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zDQpwcmVkX3VuaV9tb2RlbF90aW1lPC1sZWZ0X2pvaW4oZGF0LCBwcmVkX3VuaV9tb2RlbF90aW1lLCBieT0iTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zIikNCg0KDQoNCnBfdGltZTwtZ2dwbG90KGRhdCxhZXMoeCA9IExlbmd0aF9jb29raW5nX3RpbWVfaW5fcywgeSA9IGxuUlIpKSArDQogIA0KICAgICAgIGdlb21fcG9pbnQoYWVzKHNpemU9KDEvc3FydCh2YXJfbG5SUikpKSwgc2hhcGU9MjEsIGFscGhhPTAuOCwgZmlsbD0iZ3JheTc1IikgKw0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfZnVsbF9tb2RlbF90aW1lLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIpLCBhbHBoYSA9IDAuMjUsIGZpbGw9Im9yYW5nZXJlZCIpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX2Z1bGxfbW9kZWxfdGltZSxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2xvcj0ib3JhbmdlcmVkMiIpKyAgDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF91bmlfbW9kZWxfdGltZSwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViKSwgYWxwaGE9MC4yNSwgZmlsbD0iZ3JheTQwIikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfdW5pX21vZGVsX3RpbWUsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sPSJncmF5MzAiKSsgIA0KICANCiAgICAgICBsYWJzKHggPSAiQ29va2luZyB0aW1lIChzKSIsIHkgPSAibG5SUiIsIHNpemUgPSAiUHJlY2lzb24gKDEvU0UpIikgKyANCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlPWMoMSwxMCkpKw0KICB0aGVtZV9idygpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCxsaW5ldHlwZSA9IDIsIGNvbG91ciA9ICJibGFjayIsYWxwaGE9MC41KSsgICAjIGhvcml6b250YWwgbGluZSBhdCBsblJSID0gMA0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUpLCAjIGNoYW5nZSBmb250IHNpemVzIGFuZCBsZWdlbmQgcG9zaXRpb24NCiAgICAgICAgICBsZWdlbmQucG9zaXRpb249Im5vbmUiLA0KICAgICAgICAgIHBhbmVsLmJvcmRlcj1lbGVtZW50X3JlY3QoY29sb3VyPSJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4yKSkNCmBgYA0KDQoNCiMjIyBGaWd1cmUgMkINCg0KDQpgYGB7ciwgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9N30NCmZ1bGxfbW9kZWxfdm9sPC0gcnVuX21vZGVsKGRhdCwgfiAgICAgIHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShQRkFTX2NhcmJvbl9jaGFpbikgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX1JhdGlvX2xpcXVpZF9maXNoKQ0KDQpwcmVkX2Z1bGxfbW9kZWxfdm9sPC1wcmVkaWN0LnJtYShmdWxsX21vZGVsX3ZvbCwgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKDAsMCwgMCwgZGF0JGxvZ19SYXRpb19saXF1aWRfZmlzaCkpDQpwcmVkX2Z1bGxfbW9kZWxfdm9sPC1hcy5kYXRhLmZyYW1lKHByZWRfZnVsbF9tb2RlbF92b2wpDQpwcmVkX2Z1bGxfbW9kZWxfdm9sJGxvZ19SYXRpb19saXF1aWRfZmlzaD1wcmVkX2Z1bGxfbW9kZWxfdm9sJFgubG9nX1JhdGlvX2xpcXVpZF9maXNoDQpwcmVkX2Z1bGxfbW9kZWxfdm9sPC0gcHJlZF9mdWxsX21vZGVsX3ZvbCAlPiUgbXV0YXRlKFJhdGlvX2xpcXVpZF9maXNoID0gZXhwKFgubG9nX1JhdGlvX2xpcXVpZF9maXNoKSwgbG5SUiA9IDApIA0KDQoNCg0KdW5pX21vZGVsX3ZvbDwtIHJ1bl9tb2RlbChkYXQsIH4gbG9nX1JhdGlvX2xpcXVpZF9maXNoKQ0KDQpwcmVkX3VuaV9tb2RlbF92b2w8LXByZWRpY3Qucm1hKHVuaV9tb2RlbF92b2wsIGFkZHg9VFJVRSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfdW5pX21vZGVsX3ZvbDwtYXMuZGF0YS5mcmFtZShwcmVkX3VuaV9tb2RlbF92b2wpDQpwcmVkX3VuaV9tb2RlbF92b2wkbG9nX1JhdGlvX2xpcXVpZF9maXNoPXByZWRfdW5pX21vZGVsX3ZvbCRYLmxvZ19SYXRpb19saXF1aWRfZmlzaA0KcHJlZF91bmlfbW9kZWxfdm9sPC0gcHJlZF91bmlfbW9kZWxfdm9sICU+JSBtdXRhdGUoUmF0aW9fbGlxdWlkX2Zpc2ggPSBleHAoWC5sb2dfUmF0aW9fbGlxdWlkX2Zpc2gpLCBsblJSID0gMCkgDQoNCg0KDQpwX3ZvbDwtZ2dwbG90KGRhdCxhZXMoeCA9IGxvZ19SYXRpb19saXF1aWRfZmlzaCwgeSA9IGxuUlIpKSArDQogIA0KICAgICAgIGdlb21fcG9pbnQoYWVzKHNpemU9KDEvc3FydCh2YXJfbG5SUikpKSwgc2hhcGU9MjEsIGFscGhhPTAuOCwgZmlsbD0iZ3JheTc1IikgKw0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfZnVsbF9tb2RlbF92b2wsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiksIGFscGhhID0gMC4yNSwgZmlsbD0ib3JhbmdlcmVkIikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfZnVsbF9tb2RlbF92b2wsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sb3I9Im9yYW5nZXJlZDIiKSsgIA0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfdW5pX21vZGVsX3ZvbCwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViKSwgYWxwaGE9MC4yNSwgZmlsbD0iZ3JheTQwIikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfdW5pX21vZGVsX3ZvbCxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2w9ImdyYXkzMCIpKyAgDQogIA0KICAgICAgIGxhYnMoeCA9ICJsbiAoTGlxdWlkIHZvbHVtZSB0byB0aXNzdWUgc2FtcGxlIHJhdGlvKSAobUwvZykiLCB5ID0gImxuUlIiLCBzaXplID0gIlByZWNpc29uICgxL1NFKSIpICsgDQogIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZT1jKDEsMTApKSsNCiAgdGhlbWVfYncoKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsbGluZXR5cGUgPSAyLCBjb2xvdXIgPSAiYmxhY2siLGFscGhhPTAuNSkrICAgIyBob3Jpem9udGFsIGxpbmUgYXQgbG5SUiA9IDANCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgsIGNvbG91ciA9ICJibGFjayIsIGhqdXN0ID0gMC41KSwgIyBjaGFuZ2UgZm9udCBzaXplcyBhbmQgbGVnZW5kIHBvc2l0aW9uDQogICAgICAgICAgbGVnZW5kLnBvc2l0aW9uPSJub25lIiwgDQogICAgICAgICAgcGFuZWwuYm9yZGVyPWVsZW1lbnRfcmVjdChjb2xvdXI9ImJsYWNrIiwgZmlsbD1OQSwgc2l6ZT0xLjIpKQ0KYGBgDQoNCg0KIyMjIEZpZ3VyZSAyQw0KDQpgYGB7ciwgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9N30NCmZ1bGxfbW9kZWxfdGVtcDwtIHJ1bl9tb2RlbChkYXQsIH4gICAgIFRlbXBlcmF0dXJlX2luX0NlbHNpdXMgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKSsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2gpKSkNCg0KcHJlZF9mdWxsX21vZGVsX3RlbXA8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfdGVtcCwgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKGRhdCRUZW1wZXJhdHVyZV9pbl9DZWxzaXVzLDAsIDAsIDApKSAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIGNvb2tpbmcgdGltZQ0KcHJlZF9mdWxsX21vZGVsX3RlbXA8LWFzLmRhdGEuZnJhbWUocHJlZF9mdWxsX21vZGVsX3RlbXApDQpwcmVkX2Z1bGxfbW9kZWxfdGVtcCRUZW1wZXJhdHVyZV9pbl9DZWxzaXVzPXByZWRfZnVsbF9tb2RlbF90ZW1wJFguVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cw0KcHJlZF9mdWxsX21vZGVsX3RlbXA8LWxlZnRfam9pbihkYXQsIHByZWRfZnVsbF9tb2RlbF90ZW1wLCBieT0iVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cyIpDQoNCg0KDQp1bmlfbW9kZWxfdGVtcDwtIHJ1bl9tb2RlbChkYXQsIH4gVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cykNCg0KcHJlZF91bmlfbW9kZWxfdGVtcDwtcHJlZGljdC5ybWEodW5pX21vZGVsX3RlbXAsIGFkZHg9VFJVRSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfdW5pX21vZGVsX3RlbXA8LWFzLmRhdGEuZnJhbWUocHJlZF91bmlfbW9kZWxfdGVtcCkNCnByZWRfdW5pX21vZGVsX3RlbXAkVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cz1wcmVkX3VuaV9tb2RlbF90ZW1wJFguVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cw0KcHJlZF91bmlfbW9kZWxfdGVtcDwtbGVmdF9qb2luKGRhdCwgcHJlZF91bmlfbW9kZWxfdGVtcCwgYnk9IlRlbXBlcmF0dXJlX2luX0NlbHNpdXMiKQ0KDQoNCg0KcF90ZW1wPC1nZ3Bsb3QoZGF0LGFlcyh4ID0gVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cywgeSA9IGxuUlIpKSArDQogIA0KICAgICAgIGdlb21fcG9pbnQoYWVzKHNpemU9KDEvc3FydCh2YXJfbG5SUikpKSwgc2hhcGU9MjEsIGFscGhhPTAuOCwgZmlsbD0iZ3JheTc1IikgKw0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfZnVsbF9tb2RlbF90ZW1wLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIpLCBhbHBoYSA9IDAuMjUsIGZpbGw9Im9yYW5nZXJlZCIpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX2Z1bGxfbW9kZWxfdGVtcCxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2xvcj0ib3JhbmdlcmVkMiIpKyAgDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF91bmlfbW9kZWxfdGVtcCwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViKSwgYWxwaGE9MC4yNSwgZmlsbD0iZ3JheTQwIikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfdW5pX21vZGVsX3RlbXAsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sPSJncmF5MzAiKSsgIA0KICANCiAgICAgICBsYWJzKHggPSAiQ29va2luZyB0ZW1wZXJhdHVyZSAowrBDKSIsIHkgPSAibG5SUiIsIHNpemUgPSAiUHJlY2lzb24gKDEvU0UpIikgKyANCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlPWMoMSwxMCkpKw0KICB0aGVtZV9idygpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCxsaW5ldHlwZSA9IDIsIGNvbG91ciA9ICJibGFjayIsYWxwaGE9MC41KSsgICAjIGhvcml6b250YWwgbGluZSBhdCBsblJSID0gMA0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUpLCAjIGNoYW5nZSBmb250IHNpemVzIGFuZCBsZWdlbmQgcG9zaXRpb24NCiAgICAgICAgICBsZWdlbmQudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xNCksDQogICAgICAgICAgbGVnZW5kLnBvc2l0aW9uPWMoMSwwKSwgDQogICAgICAgICAgbGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDEsMCksDQogICAgICAgICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCksIA0KICAgICAgICAgIGxlZ2VuZC5kaXJlY3Rpb249InZlcnRpY2FsIiwNCiAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZT0xNSksIA0KICAgICAgICAgIHBhbmVsLmJvcmRlcj1lbGVtZW50X3JlY3QoY29sb3VyPSJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4yKSkNCmBgYA0KDQoNCiMjIyBGaWd1cmUgMkQNCg0KDQpgYGB7ciwgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9N30NCmZ1bGxfbW9kZWxfUEZBUzwtIHJ1bl9tb2RlbChkYXQsIH4gICAgIHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRkFTX2NhcmJvbl9jaGFpbiArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2gpKSkNCg0KcHJlZF9mdWxsX21vZGVsX1BGQVM8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfUEZBUywgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKDAsIDAsIGRhdCRQRkFTX2NhcmJvbl9jaGFpbiwgMCkpICMgU2V0IGFsbCBwcmVkaWN0b3JzIHRvIHRoZWlyIG1lYW4gKG1lYW4gPTAgd2hlbiB6LXRyYW5zZm9ybWVkKSBhbmQgc2V0IHRoZSByYW5nZSBvZiB2YWx1ZXMgb2YgY29va2luZyB0aW1lDQpwcmVkX2Z1bGxfbW9kZWxfUEZBUzwtYXMuZGF0YS5mcmFtZShwcmVkX2Z1bGxfbW9kZWxfUEZBUykNCnByZWRfZnVsbF9tb2RlbF9QRkFTJFBGQVNfY2FyYm9uX2NoYWluPXByZWRfZnVsbF9tb2RlbF9QRkFTJFguUEZBU19jYXJib25fY2hhaW4NCnByZWRfZnVsbF9tb2RlbF9QRkFTPC1sZWZ0X2pvaW4oZGF0LCBwcmVkX2Z1bGxfbW9kZWxfUEZBUywgYnk9IlBGQVNfY2FyYm9uX2NoYWluIikNCg0KDQoNCnVuaV9tb2RlbF9QRkFTPC0gcnVuX21vZGVsKGRhdCwgfiBQRkFTX2NhcmJvbl9jaGFpbikNCg0KcHJlZF91bmlfbW9kZWxfUEZBUzwtcHJlZGljdC5ybWEodW5pX21vZGVsX1BGQVMsIGFkZHg9VFJVRSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfdW5pX21vZGVsX1BGQVM8LWFzLmRhdGEuZnJhbWUocHJlZF91bmlfbW9kZWxfUEZBUykNCnByZWRfdW5pX21vZGVsX1BGQVMkUEZBU19jYXJib25fY2hhaW49cHJlZF91bmlfbW9kZWxfUEZBUyRYLlBGQVNfY2FyYm9uX2NoYWluDQpwcmVkX3VuaV9tb2RlbF9QRkFTPC1sZWZ0X2pvaW4oZGF0LCBwcmVkX3VuaV9tb2RlbF9QRkFTLCBieT0iUEZBU19jYXJib25fY2hhaW4iKQ0KDQoNCg0KcF9QRkFTPC1nZ3Bsb3QoZGF0LGFlcyh4ID0gUEZBU19jYXJib25fY2hhaW4sIHkgPSBsblJSKSkgKw0KICANCiAgICAgICBnZW9tX3BvaW50KGFlcyhzaXplPSgxL3NxcnQodmFyX2xuUlIpKSksIHNoYXBlPTIxLCBhbHBoYT0wLjgsIGZpbGw9ImdyYXk3NSIpICsNCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX2Z1bGxfbW9kZWxfUEZBUywgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViKSwgYWxwaGEgPSAwLjI1LCBmaWxsPSJvcmFuZ2VyZWQiKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9mdWxsX21vZGVsX1BGQVMsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sb3I9Im9yYW5nZXJlZDIiKSsgIA0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfdW5pX21vZGVsX1BGQVMsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiksIGFscGhhPTAuMjUsIGZpbGw9ImdyYXk0MCIpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX3VuaV9tb2RlbF9QRkFTLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZ3JheTMwIikrICANCiAgDQogICAgICAgbGFicyh4ID0gIlBGQVMgY2FyYm9uIGNoYWluIGxlbmd0aCIsIHkgPSAibG5SUiIsIHNpemUgPSAiUHJlY2lzb24gKDEvU0UpIikgKyANCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlPWMoMSwxMCkpKw0KICB0aGVtZV9idygpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCxsaW5ldHlwZSA9IDIsIGNvbG91ciA9ICJibGFjayIsYWxwaGE9MC41KSsgICAjIGhvcml6b250YWwgbGluZSBhdCBsblJSID0gMA0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUpLCAjIGNoYW5nZSBmb250IHNpemVzIGFuZCBsZWdlbmQgcG9zaXRpb24NCiAgICAgICAgICBsZWdlbmQucG9zaXRpb249Im5vbmUiLA0KICAgICAgICAgIHBhbmVsLmJvcmRlcj1lbGVtZW50X3JlY3QoY29sb3VyPSJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4yKSkNCmBgYA0KDQojIyMgQ29tYmluZSBwbG90cw0KDQpgYGB7ciwgZmlnLndpZHRoPTE1LCBmaWcuaGVpZ2h0PTEyfQ0KKHBfdGltZStwX3ZvbCkvKHBfdGVtcCtwX1BGQVMpICsgcGxvdF9hbm5vdGF0aW9uKHRhZ19sZXZlbHM9YygnQScsICdCJywgJ0MnLCAnRCcpKQ0KYGBgDQoNCg0KIyMgRmlndXJlIDMsIHdpdGggUmF0aW9fbGlxdWlkX2Zpc2ggdGFrZW4gYXMgYE5BYCBmb3IgdGhlIGRyeSBjb29raW5nIGNhdGVnb3J5DQoNCiMjIyMgRmlndXJlIDNBDQoNCkVzdGltYXRlcyBhdCBjb29raW5nIHRpbWVzIG9mIDIsIDEwIGFuZCAyNSBtaW4NCmBgYHtyLCBmaWcuaGVpZ2h0PTUsIGZpZy53aWR0aD03fQ0KdGltZV9tbSA8LW1vZF9yZXN1bHRzKGZ1bGxfbW9kZWxfb3JnX3VuaXRzLCBkYXRhID0gZGF0LCBtb2QgPSAiMSIsIGdyb3VwPSJTdHVkeV9JRCIsIGF0ID0gbGlzdChMZW5ndGhfY29va2luZ190aW1lX2luX3MgPSBjKDEyMCw2MDAsMTUwMCkpLCBieSA9ICJMZW5ndGhfY29va2luZ190aW1lX2luX3MiKQ0KIA0KcF90aW1lX21tPC1teV9vcmNoYXJkKHRpbWVfbW0sIHhsYWIgPSAibG5SUiIsIG1vZD0iMSIsIGNvbmRpdGlvbi5sYWIgPSAiQ29va2luZyB0aW1lIChzZWMpIiwgZ3JvdXA9IlN0dWR5X0lEIiwgYWxwaGE9MC4zLCB0cnVuay5zaXplPTgsIGJyYW5jaC5zaXplID0gMS43NSwgdHdpZy5zaXplID0gMC43NSwgbGVnZW5kLnBvcz0iYm90dG9tLmxlZnQiKSsNCiAgICAgICAgICAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCAxMCkpKw0KICAgICAgICAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9ImdyYXk3NSIpKw0KICAgICAgICAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9ICJncmF5NjAiKSsgIyBjaGFuZ2UgY29sb3Vycw0KICAgICAgICAgICB0aGVtZShwYW5lbC5ib3JkZXIgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gImJsYWNrIiwgZmlsbD1OQSwgc2l6ZT0xLjMpLCAjIGJvcmRlciBhcm91bmQgdGhlIHBsb3QNCiAgICAgICAgICAgICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLCAjIGNoYW5nZSBmb250IHNpemVzDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMpLA0KICAgICAgICAgICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApKSsNCiAgICAgICAgICBndWlkZXMoc2l6ZT1GKQ0KYGBgDQoNCiMjIyMgRmlndXJlIDNCDQoNCkVzdGltYXRlcyBhdCAwIG1ML2cgb2YgdGlzc3VlLCAxMCBtTC9nIG9mIHRpc3N1ZSBvciA0NSBtTC9nIG9mIHRpc3N1ZQ0KYGBge3IsIGZpZy5oZWlnaHQ9NSwgZmlnLndpZHRoPTd9DQp2b2x1bWVfbW0gPC1tb2RfcmVzdWx0cyhmdWxsX21vZGVsX29yZ191bml0c19vaWxfd2F0ZXIsIGRhdGEgPSBkYXRfb2lsX3dhdGVyLCBtb2QgPSAiMSIsIGdyb3VwPSJTdHVkeV9JRCIsYXQgPSBsaXN0KGxvZ19SYXRpb19saXF1aWRfZmlzaD0gYygtMi4zLCAyLjMsIDMuOCkpLCBieSA9ICJsb2dfUmF0aW9fbGlxdWlkX2Zpc2giKQ0KIA0KcF92b2x1bWVfbW08LW15X29yY2hhcmQodm9sdW1lX21tLCB4bGFiID0gImxuUlIiLCBkYXRhPWRhdF9vaWxfd2F0ZXIsY29uZGl0aW9uLmxhYiA9ICJsbiAoTGlxdWlkIHRvIHNhbXBsZSByYXRpbykiLCBhbHBoYT0wLjMsIHRydW5rLnNpemU9OCwgYnJhbmNoLnNpemUgPSAxLjc1LCB0d2lnLnNpemUgPSAwLjc1LCBsZWdlbmQucG9zPSJib3R0b20ubGVmdCIpKw0KICAgICAgICAgICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2UgPSBjKDEsIDEwKSkrDQogICAgICAgICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz0iZ3JheTc1IikrDQogICAgICAgICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gImdyYXk2MCIpKyAjIGNoYW5nZSBjb2xvdXJzDQogICAgICAgICAgIHRoZW1lKHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMyksICMgYm9yZGVyIGFyb3VuZCB0aGUgcGxvdA0KICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksICMgY2hhbmdlIGZvbnQgc2l6ZXMNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMyksDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCkpKw0KICAgICAgICAgICBndWlkZXMoc2l6ZT1GKQ0KYGBgDQoNCg0KDQojIyMjIEZpZ3VyZSAzQyANCg0KDQpFc3RpbWF0ZXMgYXQgY29va2luZyB0aW1lcyBvZiAyLCAxMCBhbmQgMjUgbWluDQoNCmBgYHtyLCBmaWcuaGVpZ2h0PTEwLCBmaWcud2lkdGg9OH0NCg0KdGltZV9tbV9jYXQgPC0gbW9kX3Jlc3VsdHMoZnVsbF9tb2RlbF9vcmdfdW5pdHMsIGRhdGEgPSBkYXQsIG1vZCA9ICJDb29raW5nX0NhdGVnb3J5IiwgZ3JvdXA9IlN0dWR5X0lEIixhdCA9IGxpc3QoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zID0gYygxMjAsNjAwLDE1MDApKSwgYnkgPSAiTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zIikNCiANCnBfdGltZV9tbV9jYXQ8LW15X29yY2hhcmQodGltZV9tbV9jYXQsIHhsYWIgPSAibG5SUiIsIGNvbmRpdGlvbi5sYWIgID0gIkNvb2tpbmcgdGltZSAoc2VjKSIsIGFscGhhPTAuMywgdHJ1bmsuc2l6ZT04LCBicmFuY2guc2l6ZSA9IDEuNzUsIHR3aWcuc2l6ZSA9IDAuNzUsIGxlZ2VuZC5wb3M9ImJvdHRvbS5sZWZ0IikrDQogICAgICAgICAgIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZSA9IGMoMSwgMTApLCBicmVha3M9YygyLDQsNikpKw0KICAgICAgICAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZ29sZGVucm9kMiIsICJkb2RnZXJibHVlMyIpKSsNCiAgICAgICAgICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJnb2xkZW5yb2QyIiwgImRvZGdlcmJsdWUzIikpKyAjIGNoYW5nZSBjb2xvdXJzDQogICAgICAgICAgIHRoZW1lKHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMyksICMgYm9yZGVyIGFyb3VuZCB0aGUgcGxvdA0KICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksICMgY2hhbmdlIGZvbnQgc2l6ZXMNCiAgICAgICAgICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMyksDQogICAgICAgICAgICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCkpDQpgYGANCg0KIyMjIyBDb21iaW5lIHBsb3RzIA0KDQpgYGB7ciwgZmlnLmhlaWdodD0xMCwgZmlnLndpZHRoPTE0fQ0KKChwX3RpbWVfbW0vcF92b2x1bWVfbW0pfHBfdGltZV9tbV9jYXQpICsgcGxvdF9hbm5vdGF0aW9uKHRhZ19sZXZlbHM9YygiQSIsICJCIiwgIkMiKSkNCmBgYA0KDQoNCiMjIEZpZ3VyZSA0LCB3aXRoIFJhdGlvX2xpcXVpZF9maXNoIHRha2VuIGFzIGBOQWAgZm9yIHRoZSBkcnkgY29va2luZyBjYXRlZ29yeQ0KDQojIyMgRmlndXJlIDRBIA0KDQpgYGB7ciwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTB9DQojIyMjIyBPaWwgYmFzZWQNCmZ1bGxfbW9kZWxfb2lsX3RpbWU8LSBydW5fbW9kZWwob2lsX2RhdCwgfiBzY2FsZShUZW1wZXJhdHVyZV9pbl9DZWxzaXVzKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoKSkpDQoNCnByZWRfb2lsX3RpbWU8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfb2lsX3RpbWUsIGFkZHg9VFJVRSwgbmV3bW9kcz1jYmluZCgwLG9pbF9kYXQkTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zLCAwLCAwKSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCnByZWRfb2lsX3RpbWU8LWFzLmRhdGEuZnJhbWUocHJlZF9vaWxfdGltZSkNCnByZWRfb2lsX3RpbWUkTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zPXByZWRfb2lsX3RpbWUkWC5MZW5ndGhfY29va2luZ190aW1lX2luX3MNCnByZWRfb2lsX3RpbWU8LWxlZnRfam9pbihvaWxfZGF0LCBwcmVkX29pbF90aW1lLCBieT0iTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zIikNCg0KDQojIyMjIyBXYXRlciBiYXNlZA0KZnVsbF9tb2RlbF93YXRlcl90aW1lPC0gcnVuX21vZGVsKHdhdGVyX2RhdCwgfiBzY2FsZShUZW1wZXJhdHVyZV9pbl9DZWxzaXVzKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoKSkpDQoNCnByZWRfd2F0ZXJfdGltZTwtcHJlZGljdC5ybWEoZnVsbF9tb2RlbF93YXRlcl90aW1lLCBhZGR4PVRSVUUsIG5ld21vZHM9Y2JpbmQod2F0ZXJfZGF0JExlbmd0aF9jb29raW5nX3RpbWVfaW5fcywgMCwgMCkpICMgU2V0IGFsbCBwcmVkaWN0b3JzIHRvIHRoZWlyIG1lYW4gKG1lYW4gPTAgd2hlbiB6LXRyYW5zZm9ybWVkKSBhbmQgc2V0IHRoZSByYW5nZSBvZiB2YWx1ZXMgb2YgY29va2luZyB0aW1lDQpwcmVkX3dhdGVyX3RpbWU8LWFzLmRhdGEuZnJhbWUocHJlZF93YXRlcl90aW1lKQ0KcHJlZF93YXRlcl90aW1lJExlbmd0aF9jb29raW5nX3RpbWVfaW5fcz1wcmVkX3dhdGVyX3RpbWUkWC5MZW5ndGhfY29va2luZ190aW1lX2luX3MNCnByZWRfd2F0ZXJfdGltZTwtbGVmdF9qb2luKHdhdGVyX2RhdCwgcHJlZF93YXRlcl90aW1lLCBieT0iTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zIikNCg0KIyMjIyMgTm8gbGlxdWlkIA0KDQpmdWxsX21vZGVsX2RyeV90aW1lPC0gcnVuX21vZGVsKGRyeV9kYXQsIH4gTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKQ0KDQpwcmVkX2RyeV90aW1lPC1wcmVkaWN0LnJtYShmdWxsX21vZGVsX2RyeV90aW1lLCBhZGR4PVRSVUUpICMgU2V0IGFsbCBwcmVkaWN0b3JzIHRvIHRoZWlyIG1lYW4gKG1lYW4gPTAgd2hlbiB6LXRyYW5zZm9ybWVkKSBhbmQgc2V0IHRoZSByYW5nZSBvZiB2YWx1ZXMgb2YgY29va2luZyB0aW1lDQpwcmVkX2RyeV90aW1lPC1hcy5kYXRhLmZyYW1lKHByZWRfZHJ5X3RpbWUpDQpwcmVkX2RyeV90aW1lJExlbmd0aF9jb29raW5nX3RpbWVfaW5fcz1wcmVkX2RyeV90aW1lJFguTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zDQpwcmVkX2RyeV90aW1lPC1sZWZ0X2pvaW4oZHJ5X2RhdCwgcHJlZF9kcnlfdGltZSwgYnk9Ikxlbmd0aF9jb29raW5nX3RpbWVfaW5fcyIpDQoNCg0KDQoNCnBfNEE8LWdncGxvdChkYXQsYWVzKHggPSBMZW5ndGhfY29va2luZ190aW1lX2luX3MsIHkgPSBsblJSLCBmaWxsPUNvb2tpbmdfQ2F0ZWdvcnkpKSArDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF93YXRlcl90aW1lLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIsIGNvbG9yID0gTlVMTCksIGFscGhhID0gMC4yKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF93YXRlcl90aW1lLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZG9kZ2VyYmx1ZSIpKyAgDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF9vaWxfdGltZSwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfb2lsX3RpbWUsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sPSJnb2xkZW5yb2QiKSsgIA0KICANCiAgICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX2RyeV90aW1lLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIsIGNvbG9yID0gTlVMTCksIGFscGhhID0gMC4yKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9kcnlfdGltZSxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2w9InBhbGVncmVlbjMiKSsgIA0KICANCiAgDQogICAgICAgZ2VvbV9wb2ludChhZXMoc2l6ZT0oMS9zcXJ0KHZhcl9sblJSKSksIGZpbGw9Q29va2luZ19DYXRlZ29yeSksIHNoYXBlPTIxLCBhbHBoYT0wLjgpICsNCiAgICAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiIzU1QzY2N0ZGIiwgImdvbGRlbnJvZDIiLCAiZG9kZ2VyYmx1ZTMiKSkrDQogICAgICAgbGFicyh4ID0gIkNvb2tpbmcgdGltZSAocykiLCB5ID0gImxuUlIiLCBzaXplID0gIlByZWNpc29uICgxL1NFKSIpICsgDQogIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZT1jKDEsMTApKSsNCiAgdGhlbWVfYncoKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsbGluZXR5cGUgPSAyLCBjb2xvdXIgPSAiYmxhY2siLGFscGhhPTAuNSkrICAgIyBob3Jpem9udGFsIGxpbmUgYXQgbG5SUiA9IDANCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgsIGNvbG91ciA9ICJibGFjayIsIGhqdXN0ID0gMC41KSwgIyBjaGFuZ2UgZm9udCBzaXplcyBhbmQgbGVnZW5kIHBvc2l0aW9uDQogICAgICAgICAgbGVnZW5kLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTQpLA0KICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbj1jKDEsMCksIA0KICAgICAgICAgIGxlZ2VuZC5qdXN0aWZpY2F0aW9uID0gYygxLDApLA0KICAgICAgICAgIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpLCANCiAgICAgICAgICBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwNCiAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZT0xNSksIA0KICAgICAgICAgIHBhbmVsLmJvcmRlcj1lbGVtZW50X3JlY3QoY29sb3VyPSJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4yKSkrDQogIGd1aWRlcyhmaWxsPUYpDQpgYGANCg0KIyMjIEZpZ3VyZSA0QiANCg0KDQpgYGB7ciwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTB9DQojIyMjIyBPaWwgYmFzZWQNCmZ1bGxfbW9kZWxfb2lsX3ZvbDwtIHJ1bl9tb2RlbChvaWxfZGF0LCB+IHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX1JhdGlvX2xpcXVpZF9maXNoKQ0KcHJlZF9vaWxfdm9sPC1wcmVkaWN0LnJtYShmdWxsX21vZGVsX29pbF92b2wsIGFkZHg9VFJVRSwgbmV3bW9kcz1jYmluZCgwLDAsMCwgb2lsX2RhdCRsb2dfUmF0aW9fbGlxdWlkX2Zpc2gpKSAjIFNldCBhbGwgcHJlZGljdG9ycyB0byB0aGVpciBtZWFuIChtZWFuID0wIHdoZW4gei10cmFuc2Zvcm1lZCkgYW5kIHNldCB0aGUgcmFuZ2Ugb2YgdmFsdWVzIG9mIGNvb2tpbmcgdGltZQ0KDQpwcmVkX29pbF92b2w8LWFzLmRhdGEuZnJhbWUocHJlZF9vaWxfdm9sKQ0KcHJlZF9vaWxfdm9sPC1wcmVkX29pbF92b2wgJT4lIG11dGF0ZShSYXRpb19saXF1aWRfZmlzaD1leHAoWC5sb2dfUmF0aW9fbGlxdWlkX2Zpc2gpLCBDb29raW5nX0NhdGVnb3J5PSJvaWwtYmFzZWQiLCBsblJSPTApICMgZm9yIHRoZSBwbG90IHRvIHdvcmssIHdlIG5lZWQgdG8gYWRkIGEgY29sdW1uIHdpdGggY29va2luZyBjYXRlZ29yeSBhbmQgYSBjb2x1bW4gd2l0aCBsblJSDQoNCg0KIyMjIyMgV2F0ZXIgYmFzZWQgDQoNCmZ1bGxfbW9kZWxfd2F0ZXJfdm9sPC0gcnVuX21vZGVsKHdhdGVyX2RhdCwgfiBzY2FsZShUZW1wZXJhdHVyZV9pbl9DZWxzaXVzKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoTGVuZ3RoX2Nvb2tpbmdfdGltZV9pbl9zKSsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShQRkFTX2NhcmJvbl9jaGFpbikgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19SYXRpb19saXF1aWRfZmlzaCkNCg0KcHJlZF93YXRlcl92b2w8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfd2F0ZXJfdm9sLCBhZGR4PVRSVUUsIG5ld21vZHM9Y2JpbmQoMCwwLCB3YXRlcl9kYXQkbG9nX1JhdGlvX2xpcXVpZF9maXNoKSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBjb29raW5nIHRpbWUNCg0KcHJlZF93YXRlcl92b2w8LWFzLmRhdGEuZnJhbWUocHJlZF93YXRlcl92b2wpDQpwcmVkX3dhdGVyX3ZvbDwtcHJlZF93YXRlcl92b2wgJT4lIG11dGF0ZShSYXRpb19saXF1aWRfZmlzaD1leHAoWC5sb2dfUmF0aW9fbGlxdWlkX2Zpc2gpLCBDb29raW5nX0NhdGVnb3J5PSJ3YXRlci1iYXNlZCIsIGxuUlI9MCkNCg0KDQoNCnBfNEI8LSBnZ3Bsb3QoZGF0LGFlcyh4ID0gbG9nKFJhdGlvX2xpcXVpZF9maXNoKSwgeSA9IGxuUlIsIGZpbGw9Q29va2luZ19DYXRlZ29yeSkpICsNCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX3dhdGVyX3ZvbCwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfd2F0ZXJfdm9sLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZG9kZ2VyYmx1ZSIpKyAgDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF9vaWxfdm9sLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIsIGNvbG9yID0gTlVMTCksIGFscGhhID0gMC4zKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9vaWxfdm9sLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0iZ29sZGVucm9kIikrICANCiAgDQogIA0KICAgICAgIGdlb21fcG9pbnQoYWVzKHNpemU9KDEvc3FydCh2YXJfbG5SUikpLCBmaWxsPUNvb2tpbmdfQ2F0ZWdvcnkpLCBzaGFwZT0yMSwgYWxwaGE9MC44KSArDQogICAgICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIiM1NUM2NjdGRiIsImdvbGRlbnJvZDIiLCAiZG9kZ2VyYmx1ZTMiKSkrDQogICAgICAgbGFicyh4ID0gImxuKExpcXVpZCB2b2x1bWUgdG8gdGlzc3VlIHNhbXBsZSByYXRpbykgKG1ML2cpIiwgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIA0KICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2U9YygxLDEwKSkrDQogIHRoZW1lX2J3KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgIA0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUpLCANCiAgICAgICAgICBsZWdlbmQudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xNCksDQogICAgICAgICAgbGVnZW5kLnBvc2l0aW9uPSJub25lIiwNCiAgICAgICAgICBwYW5lbC5ib3JkZXI9ZWxlbWVudF9yZWN0KGNvbG91cj0iYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMikpICMjIyMgVGhlIGxpbmUgZG9lc24ndCBnbyBhbGwgdGhlIHdheSBkb3duIGZvciB3YXRlci1iYXNlZCBiZWNhdXNlIHRoZSBoaWdoZXN0IHZhbHVlcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBmdWxsIG1vZGVsDQoNCmBgYA0KDQoNCiMjIyBGaWd1cmUgNEMgDQoNCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMH0NCg0KZnVsbF9tb2RlbF9vaWxfdGVtcDwtIHJ1bl9tb2RlbChvaWxfZGF0LCB+IFRlbXBlcmF0dXJlX2luX0NlbHNpdXMgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUoUEZBU19jYXJib25fY2hhaW4pICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2gpKSkNCg0KcHJlZF9vaWxfdGVtcDwtcHJlZGljdC5ybWEoZnVsbF9tb2RlbF9vaWxfdGVtcCwgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKG9pbF9kYXQkVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cywwLCAwLDApKSANCnByZWRfb2lsX3RlbXA8LWFzLmRhdGEuZnJhbWUocHJlZF9vaWxfdGVtcCkNCnByZWRfb2lsX3RlbXAkVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cz1wcmVkX29pbF90ZW1wJFguVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cw0KcHJlZF9vaWxfdGVtcDwtbGVmdF9qb2luKG9pbF9kYXQsIHByZWRfb2lsX3RlbXAsIGJ5PSJUZW1wZXJhdHVyZV9pbl9DZWxzaXVzIikNCg0KDQoNCnBfNEM8LWdncGxvdChkYXQsYWVzKHggPSBUZW1wZXJhdHVyZV9pbl9DZWxzaXVzLCB5ID0gbG5SUiwgZmlsbD1Db29raW5nX0NhdGVnb3J5KSkgKw0KICAgIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF9vaWxfdGVtcCwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMykgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfb2lsX3RlbXAsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sPSJnb2xkZW5yb2QiKSsgIA0KICANCiAgICAgICBnZW9tX3BvaW50KGFlcyhzaXplPSgxL3NxcnQodmFyX2xuUlIpKSwgZmlsbD1Db29raW5nX0NhdGVnb3J5KSwgc2hhcGU9MjEsIGFscGhhPTAuOCkgKw0KICAgICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCIjNTVDNjY3RkYiLCAiZ29sZGVucm9kMiIsICJkb2RnZXJibHVlMyIpKSsNCiAgICAgICBsYWJzKHggPSAiQ29va2luZyB0ZW1wZXJhdHVyZSAowrBDKSIsIHkgPSAibG5SUiIsIHNpemUgPSAiUHJlY2lzb24gKDEvU0UpIikgKyANCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlPWMoMSwxMCkpKw0KICB0aGVtZV9idygpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCxsaW5ldHlwZSA9IDIsIGNvbG91ciA9ICJibGFjayIsYWxwaGE9MC41KSsgICAjIGhvcml6b250YWwgbGluZSBhdCBsblJSID0gMA0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgY29sb3VyID0gImJsYWNrIiwgaGp1c3QgPSAwLjUpLCAjIGNoYW5nZSBmb250IHNpemVzIGFuZCBsZWdlbmQgcG9zaXRpb24NCiAgICAgICAgICBsZWdlbmQudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xNCksDQogICAgICAgICAgbGVnZW5kLnBvc2l0aW9uPWMoMSwwKSwgDQogICAgICAgICAgbGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDEsMCksDQogICAgICAgICAgbGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCksIA0KICAgICAgICAgIGxlZ2VuZC5kaXJlY3Rpb249InZlcnRpY2FsIiwNCiAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZT0xNSksIA0KICAgICAgICAgIHBhbmVsLmJvcmRlcj1lbGVtZW50X3JlY3QoY29sb3VyPSJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4yKSkrDQogIGd1aWRlcyhzaXplPUYpDQpgYGANCg0KDQojIyMgRmlndXJlIDREIA0KDQoNCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMH0NCiMjIyMjIE9pbCBiYXNlZA0KZnVsbF9tb2RlbF9vaWxfUEZBUzwtIHJ1bl9tb2RlbChvaWxfZGF0LCB+IHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGQVNfY2FyYm9uX2NoYWluICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2gpKSkNCg0KcHJlZF9vaWxfUEZBUzwtcHJlZGljdC5ybWEoZnVsbF9tb2RlbF9vaWxfUEZBUywgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKDAsMCwgb2lsX2RhdCRQRkFTX2NhcmJvbl9jaGFpbiwwKSkgIyBTZXQgYWxsIHByZWRpY3RvcnMgdG8gdGhlaXIgbWVhbiAobWVhbiA9MCB3aGVuIHotdHJhbnNmb3JtZWQpIGFuZCBzZXQgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiBQRkFTIGNhcmJvbiBjaGFpbg0KcHJlZF9vaWxfUEZBUzwtYXMuZGF0YS5mcmFtZShwcmVkX29pbF9QRkFTKQ0KcHJlZF9vaWxfUEZBUyRQRkFTX2NhcmJvbl9jaGFpbj1wcmVkX29pbF9QRkFTJFguUEZBU19jYXJib25fY2hhaW4NCnByZWRfb2lsX1BGQVM8LWxlZnRfam9pbihvaWxfZGF0LCBwcmVkX29pbF9QRkFTLCBieT0iUEZBU19jYXJib25fY2hhaW4iKQ0KDQoNCiMjIyMjIFdhdGVyIGJhc2VkDQpmdWxsX21vZGVsX3dhdGVyX1BGQVM8LSBydW5fbW9kZWwod2F0ZXJfZGF0LCB+IHNjYWxlKFRlbXBlcmF0dXJlX2luX0NlbHNpdXMpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShMZW5ndGhfY29va2luZ190aW1lX2luX3MpKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBGQVNfY2FyYm9uX2NoYWluICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZShsb2coUmF0aW9fbGlxdWlkX2Zpc2gpKSkNCg0KcHJlZF93YXRlcl9QRkFTPC1wcmVkaWN0LnJtYShmdWxsX21vZGVsX3dhdGVyX1BGQVMsIGFkZHg9VFJVRSwgbmV3bW9kcz1jYmluZCgwLCB3YXRlcl9kYXQkUEZBU19jYXJib25fY2hhaW4sMCkpICMgU2V0IGFsbCBwcmVkaWN0b3JzIHRvIHRoZWlyIG1lYW4gKG1lYW4gPTAgd2hlbiB6LXRyYW5zZm9ybWVkKSBhbmQgc2V0IHRoZSByYW5nZSBvZiB2YWx1ZXMgb2YgY29va2luZyB0aW1lDQpwcmVkX3dhdGVyX1BGQVM8LWFzLmRhdGEuZnJhbWUocHJlZF93YXRlcl9QRkFTKQ0KcHJlZF93YXRlcl9QRkFTJFBGQVNfY2FyYm9uX2NoYWluPXByZWRfd2F0ZXJfUEZBUyRYLlBGQVNfY2FyYm9uX2NoYWluDQpwcmVkX3dhdGVyX1BGQVM8LWxlZnRfam9pbih3YXRlcl9kYXQsIHByZWRfd2F0ZXJfUEZBUywgYnk9IlBGQVNfY2FyYm9uX2NoYWluIikNCg0KIyMjIyMgTm8gbGlxdWlkIA0KDQpmdWxsX21vZGVsX2RyeV9QRkFTPC0gcnVuX21vZGVsKGRyeV9kYXQsIH4gUEZBU19jYXJib25fY2hhaW4pDQoNCnByZWRfZHJ5X1BGQVM8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfZHJ5X1BGQVMsIGFkZHg9VFJVRSkNCnByZWRfZHJ5X1BGQVM8LWFzLmRhdGEuZnJhbWUocHJlZF9kcnlfUEZBUykNCnByZWRfZHJ5X1BGQVMkUEZBU19jYXJib25fY2hhaW49cHJlZF9kcnlfUEZBUyRYLlBGQVNfY2FyYm9uX2NoYWluDQpwcmVkX2RyeV9QRkFTPC1sZWZ0X2pvaW4oZHJ5X2RhdCwgcHJlZF9kcnlfUEZBUywgYnk9IlBGQVNfY2FyYm9uX2NoYWluIikNCg0KDQoNCg0KcF80RDwtZ2dwbG90KGRhdCxhZXMoeCA9IFBGQVNfY2FyYm9uX2NoYWluLCB5ID0gbG5SUiwgZmlsbD1Db29raW5nX0NhdGVnb3J5KSkgKw0KICANCiAgICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfZHJ5X1BGQVMsIGFlcyh5bWluID0gY2kubGIsIHltYXggPSBjaS51YiwgY29sb3IgPSBOVUxMKSwgYWxwaGEgPSAwLjIpICsNCiAgICAgICBnZW9tX2xpbmUoZGF0YT1wcmVkX2RyeV9QRkFTLGFlcyh5ID0gcHJlZCksIHNpemUgPSAxLjUsIGNvbD0icGFsZWdyZWVuMyIpKyAgDQogIA0KICANCiAgICAgICBnZW9tX3JpYmJvbihkYXRhPXByZWRfd2F0ZXJfUEZBUywgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViLCBjb2xvciA9IE5VTEwpLCBhbHBoYSA9IDAuMikgKw0KICAgICAgIGdlb21fbGluZShkYXRhPXByZWRfd2F0ZXJfUEZBUyxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2w9ImRvZGdlcmJsdWUiKSsgIA0KICANCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX29pbF9QRkFTLCBhZXMoeW1pbiA9IGNpLmxiLCB5bWF4ID0gY2kudWIsIGNvbG9yID0gTlVMTCksIGFscGhhID0gMC4zKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9vaWxfUEZBUyxhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2w9ImdvbGRlbnJvZCIpKyAgDQogIA0KICANCiAgICAgICBnZW9tX3BvaW50KGFlcyhzaXplPSgxL3NxcnQodmFyX2xuUlIpKSwgZmlsbD1Db29raW5nX0NhdGVnb3J5KSwgc2hhcGU9MjEsIGFscGhhPTAuOCkgKw0KICAgICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCIjNTVDNjY3RkYiLCAiZ29sZGVucm9kMiIsICJkb2RnZXJibHVlMyIpKSsNCiAgICAgICBsYWJzKHggPSAiUEZBUyBjYXJib24gY2hhaW4gbGVuZ3RoIiwgeSA9ICJsblJSIiwgc2l6ZSA9ICJQcmVjaXNvbiAoMS9TRSkiKSArIA0KICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2U9YygxLDEwKSkrDQogIHRoZW1lX2J3KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLGxpbmV0eXBlID0gMiwgY29sb3VyID0gImJsYWNrIixhbHBoYT0wLjUpKyAgICMgaG9yaXpvbnRhbCBsaW5lIGF0IGxuUlIgPSAwDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE4LCBjb2xvdXIgPSAiYmxhY2siLCBoanVzdCA9IDAuNSksICMgY2hhbmdlIGZvbnQgc2l6ZXMgYW5kIGxlZ2VuZCBwb3NpdGlvbg0KICAgICAgICAgIGxlZ2VuZC50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTE0KSwNCiAgICAgICAgICBsZWdlbmQucG9zaXRpb249Im5vbmUiLA0KICAgICAgICAgIHBhbmVsLmJvcmRlcj1lbGVtZW50X3JlY3QoY29sb3VyPSJibGFjayIsIGZpbGw9TkEsIHNpemU9MS4yKSkNCmBgYA0KDQoNCiMjIyBDb21iaW5lIHBsb3RzDQpgYGB7ciwgZmlnLndpZHRoPTE1LCBmaWcuaGVpZ2h0PTEyfQ0KDQoocF80QStwXzRCKS8ocF80QytwXzREKSsgcGxvdF9hbm5vdGF0aW9uKHRhZ19sZXZlbHM9YygiQSIsICJCIiwgIkMiLCAiRCIpKQ0KDQpgYGANCg0KDQojIyBGaWd1cmUgNSwgd2l0aCBSYXRpb19saXF1aWRfZmlzaCB0YWtlbiBhcyBgTkFgIGZvciB0aGUgZHJ5IGNvb2tpbmcgY2F0ZWdvcnkgDQoNCiMjIyBGaWd1cmUgNUEgDQoNCmBgYHtyLCBmaWcud2lkdGg9NywgZmlnLmhlaWdodD05fQ0KZGF0JFN0dWR5X0lEPC0gYXMuZmFjdG9yKGRhdCRTdHVkeV9JRCkNCg0KIyBmdW5uZWwoZnVsbF9tb2RlbCwgDQojICAgICAgIHlheGlzPSJzZWludiIsICMgSW52ZXJzZSBvZiBzdGFuZGFyZCBlcnJvciAocHJlY2lzaW9uKSBhcyB0aGUgeSBheGlzDQojICAgICAgIGxldmVsID0gYyg5MCwgOTUsIDk5KSwgICMgbGV2ZWxzIG9mIHN0YXRpc3RpY2FsIHNpZ25pZmljYW5jZSBoaWdobGlnaHRlZCANCiMgICAgICAgc2hhZGUgPSBjKCJ3aGl0ZSIsICJncmF5NzUiLCAiZ3JheTU1IiwgImdyYXk0MCIpLCAjIHNoYWRlcyBmb3IgZGlmZmVyZW50IGxldmVscyBvZiBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2UNCiMgICAgICAgbGVnZW5kID0gVFJVRSwgIyBkaXNwbGF5IGxlZ2VuZA0KIyAgICAgICB5bGFiPSJQcmVjaXNpb24gKDEvU0UpIiwgDQojICAgICAgIGNleC5sYWI9MS43NSwgDQojICAgICAgIGRpZ2l0cz0xLCANCiMgICAgICAgY2V4PTIsDQojICAgICAgIHBjaD0yMSwNCiMgICAgICAgY29sPWRhdCRTdHVkeV9JRCkNCg0KDQpwZGYoTlVMTCkNCmRldi5jb250cm9sKGRpc3BsYXlsaXN0PSJlbmFibGUiKQ0KcGFyKG1hcj1jKDQsNiwwLjEsMCkpDQoNCnBsb3RfZiA8LSBmdW5uZWwoZnVsbF9tb2RlbCwgDQogICAgICB5YXhpcz0ic2VpbnYiLCAjIEludmVyc2Ugb2Ygc3RhbmRhcmQgZXJyb3IgKHByZWNpc2lvbikgYXMgdGhlIHkgYXhpcw0KICAgICAgbGV2ZWwgPSBjKDkwLCA5NSwgOTkpLCAgIyBsZXZlbHMgb2Ygc3RhdGlzdGljYWwgc2lnbmlmaWNhbmNlIGhpZ2hsaWdodGVkIA0KICAgICAgc2hhZGUgPSBjKCJ3aGl0ZSIsICJncmF5NzUiLCAiZ3JheTU1IiwgImdyYXk0MCIpLCAjIHNoYWRlcyBmb3IgZGlmZmVyZW50IGxldmVscyBvZiBzdGF0aXN0aWNhbCBzaWduaWZpY2FuY2UNCiAgICAgIGxlZ2VuZCA9IFRSVUUsICMgZGlzcGxheSBsZWdlbmQNCiAgICAgIHlsYWI9IlByZWNpc2lvbiAoMS9TRSkiLCANCiAgICAgIGNleC5sYWI9MS43NSwgDQogICAgICBkaWdpdHM9MiwgDQogICAgICB5bGltPWMoMC44NCwxLjAyKSwNCiAgICAgIHhsaW09YygtNiwgNiksDQogICAgICBjZXg9MiwNCiAgICAgIHBjaD0yMSwNCiAgICAgIGNvbD1kYXQkU3R1ZHlfSUQpDQpwXzVBIDwtIHJlY29yZFBsb3QocGxvdF9mKQ0KaW52aXNpYmxlKGRldi5vZmYoKSkNCg0KYGBgDQoNCiMjIyBGaWd1cmUgNUIgDQoNCmBgYHtyLCBmaWcud2lkdGg9OSwgZmlnLmhlaWdodD03fQ0KZnVsbF9tb2RlbF9lZ2dlciA8LSBydW5fbW9kZWwoZGF0LCB+IC0gMSArDQogICAgICAgICAgICAgICAgICAgICAgSShzcXJ0KDEvTl90aWxkZSkpICsgIA0KICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFB1YmxpY2F0aW9uX3llYXIpICsgDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cykgKw0KICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykgKw0KICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoKSkpICMgTW9kZWwgdG8gZ2V0IHByZWRpY3Rpb25zDQoNCg0KcHJlZF9lZ2dlcjwtcHJlZGljdC5ybWEoZnVsbF9tb2RlbF9lZ2dlciwgYWRkeD1UUlVFLCBuZXdtb2RzPWNiaW5kKHNxcnQoMS9kYXQkTl90aWxkZSksMCwwLDAgLDAsIDApKSANCnByZWRfZWdnZXI8LWFzLmRhdGEuZnJhbWUocHJlZF9lZ2dlcikNCnByZWRfZWdnZXIkU0VfZWZmX049cHJlZF9lZ2dlciRYLkkuc3FydC4xLk5fdGlsZGUuLg0KcHJlZF9lZ2dlcjwtIHByZWRfZWdnZXIgJT4lIG11dGF0ZShOX3RpbGRlID0gKCgxL1guSS5zcXJ0LjEuTl90aWxkZS4uKV4yKSwgbG5SUiA9IDApIA0KDQpwXzVCPC1nZ3Bsb3QoZGF0LGFlcyh4ID0gc3FydCgxL05fdGlsZGUpLCB5ID0gbG5SUikpICsNCiAgDQogICAgICAgZ2VvbV9wb2ludChhZXMoc2l6ZT0oMS9zcXJ0KHZhcl9sblJSKSkpLCBzaGFwZT0yMSwgYWxwaGE9MC44LCBmaWxsPSJncmF5NzUiKSArDQogIA0KICAgICAgIGdlb21fcmliYm9uKGRhdGE9cHJlZF9lZ2dlciwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViKSwgYWxwaGEgPSAwLjI1LCBmaWxsPSJvcmFuZ2VyZWQiKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9lZ2dlcixhZXMoeSA9IHByZWQpLCBzaXplID0gMS41LCBjb2xvcj0ib3JhbmdlcmVkMiIpKyAgDQoNCiAgICAgICBsYWJzKHggPSAiU3RhbmRhcmQgZXJyb3IiLCB5ID0gImxuUlIiLCBzaXplID0gIlByZWNpc29uICgxL1NFKSIpICsgDQogIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZT1jKDEsMTApKSsNCiAgdGhlbWVfYncoKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsbGluZXR5cGUgPSAyLCBjb2xvdXIgPSAiYmxhY2siLGFscGhhPTAuNSkrICAgIyBob3Jpem9udGFsIGxpbmUgYXQgbG5SUiA9IDANCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjAsIGNvbG91ciA9ICJibGFjayIsIGhqdXN0ID0gMC41KSwgIyBjaGFuZ2UgZm9udCBzaXplcyBhbmQgbGVnZW5kIHBvc2l0aW9uDQogICAgICAgICAgbGVnZW5kLnBvc2l0aW9uPSJub25lIiwNCiAgICAgICAgICBwYW5lbC5ib3JkZXI9ZWxlbWVudF9yZWN0KGNvbG91cj0iYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMikpKw0KICB4bGltKDAuMTgsMSkNCmBgYA0KDQoNCiMjIyBGaWd1cmUgNUMgDQoNCg0KYGBge3IsIGZpZy53aWR0aD05LCBmaWcuaGVpZ2h0PTd9DQpmdWxsX21vZGVsX3B1YiA8LSBydW5fbW9kZWwoZGF0LCB+IC0gMSArDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoSShzcXJ0KDEvTl90aWxkZSkpKSArICANCiAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbl95ZWFyICsgDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUoVGVtcGVyYXR1cmVfaW5fQ2Vsc2l1cykgKw0KICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKExlbmd0aF9jb29raW5nX3RpbWVfaW5fcykgKw0KICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKFBGQVNfY2FyYm9uX2NoYWluKSArDQogICAgICAgICAgICAgICAgICAgICAgc2NhbGUobG9nKFJhdGlvX2xpcXVpZF9maXNoKSkpICMgTW9kZWwgdG8gZ2V0IHByZWRpY3Rpb25zDQoNCg0KcHJlZF9wdWI8LXByZWRpY3Qucm1hKGZ1bGxfbW9kZWxfcHViLCBhZGR4PVRSVUUsIG5ld21vZHM9Y2JpbmQoMCxkYXQkUHVibGljYXRpb25feWVhciwwLDAgLDAsIDApKSANCnByZWRfcHViPC1hcy5kYXRhLmZyYW1lKHByZWRfcHViKQ0KcHJlZF9wdWIkUHVibGljYXRpb25feWVhcj1wcmVkX3B1YiRYLlB1YmxpY2F0aW9uX3llYXINCnByZWRfcHViPC1sZWZ0X2pvaW4oZGF0LCBwcmVkX3B1YiwgYnk9IlB1YmxpY2F0aW9uX3llYXIiKQ0KDQoNCg0KcF81QzwtZ2dwbG90KGRhdCxhZXMoeCA9IFB1YmxpY2F0aW9uX3llYXIsIHkgPSBsblJSKSkgKw0KICANCiAgICAgICBnZW9tX3BvaW50KGFlcyhzaXplPSgxL3NxcnQodmFyX2xuUlIpKSksIHNoYXBlPTIxLCBhbHBoYT0wLjgsIGZpbGw9ImdyYXk3NSIpICsNCiAgDQogICAgICAgZ2VvbV9yaWJib24oZGF0YT1wcmVkX3B1YiwgYWVzKHltaW4gPSBjaS5sYiwgeW1heCA9IGNpLnViKSwgYWxwaGEgPSAwLjI1LCBmaWxsPSJvcmFuZ2VyZWQiKSArDQogICAgICAgZ2VvbV9saW5lKGRhdGE9cHJlZF9wdWIsYWVzKHkgPSBwcmVkKSwgc2l6ZSA9IDEuNSwgY29sb3I9Im9yYW5nZXJlZDIiKSsgIA0KDQogICAgICAgbGFicyh4ID0gIlB1YmxpY2F0aW9uIHllYXIiLCB5ID0gImxuUlIiLCBzaXplID0gIlByZWNpc29uICgxL1NFKSIpICsgDQogIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZT1jKDEsMTApKSsNCiAgdGhlbWVfYncoKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsbGluZXR5cGUgPSAyLCBjb2xvdXIgPSAiYmxhY2siLGFscGhhPTAuNSkrICAgIyBob3Jpem9udGFsIGxpbmUgYXQgbG5SUiA9IDANCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjAsIGNvbG91ciA9ICJibGFjayIsIGhqdXN0ID0gMC41KSwgIyBjaGFuZ2UgZm9udCBzaXplcyBhbmQgbGVnZW5kIHBvc2l0aW9uDQogICAgICAgICAgbGVnZW5kLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTQpLA0KICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbj1jKDEsMCksIA0KICAgICAgICAgIGxlZ2VuZC5qdXN0aWZpY2F0aW9uID0gYygxLDApLA0KICAgICAgICAgIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpLCANCiAgICAgICAgICBsZWdlbmQuZGlyZWN0aW9uPSJ2ZXJ0aWNhbCIsDQogICAgICAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9MTUpLCANCiAgICAgICAgICBwYW5lbC5ib3JkZXI9ZWxlbWVudF9yZWN0KGNvbG91cj0iYmxhY2siLCBmaWxsPU5BLCBzaXplPTEuMikpICArDQogICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzPWMoMjAwOCwgMjAxMCwgMjAxMiwgMjAxNCwgMjAxNiwgMjAxOCAsMjAyMCkpDQoNCmBgYA0KDQojIyMgQ29tYmluZSBwbG90cw0KDQpgYGB7ciwgZmlnLndpZHRoPTE4LCBmaWcuaGVpZ2h0PTd9DQooZ2dkcmF3KHBfNUEpICsgZ2dkcmF3KHBfNUIpICsgZ2dkcmF3KHBfNUMpICsgcGxvdF9hbm5vdGF0aW9uKHRhZ19sZXZlbHMgPSAnQScpKQ0KYGBgDQoNCiMgKipTb2Z0d2FyZSBhbmQgcGFja2FnZXMgdmVyc2lvbnMqKg0KDQpgYGB7cn0NCnNlc3Npb25JbmZvKCkNCmBgYA0KDQoNCg==